Я разбираю XML внутри ListFragment
, он работает нормально, но OnListItemClick
только бросает последний элемент, я искал, но я не нашел ничего, что соответствует моему делу.Получение только последнего элемента списка List
Это внутри onPostExecute
:
XMLDOMParser parser = new XMLDOMParser();
InputStream stream = new ByteArrayInputStream(xml.getBytes());
Document doc = parser.getDocument(stream);
NodeList nodeList = doc.getElementsByTagName(KEY_ITEM);
newss = new ArrayList<News>();
news = null;
for (int i = 0; i < nodeList.getLength(); i++) {
news = new News();
Element e = (Element) nodeList.item(i);
news.setId(parser.getValue(e, KEY_ID));
news.setDate(parser.getValue(e, KEY_DATE));
news.setTitle(parser.getValue(e, KEY_TITLE));
news.setDescription(parser.getValue(e, KEY_DESC));
newss.add(news);
}
listViewAdapter = new NewsAdapter(getActivity(), newss);
getListView().setAdapter(listViewAdapter);
pDialog.dismiss();
OnItemClick
, что находится внутри того же фрагмента:
`@Override
public void onListItemClick(ListView l, View v, int position, long id) {
Toast.makeText(getActivity(), "List: "+news.getId(), Toast.LENGTH_SHORT).show();
Intent in = new Intent(getActivity(), SingleNewsActivity.class);
in.putExtra(KEY_ID, news.getId());
in.putExtra(KEY_DATE, news.getDate());
in.putExtra(KEY_TITLE, news.getTitle());
in.putExtra(KEY_DESC, news.getDescription());
startActivity(in);
}`
Мои NewsAdapter
:
public class NewsAdapter extends BaseAdapter { Activity context; List<News> newss; public NewsAdapter (Activity context, List<News> newss) { this.context = context; this.newss = newss; }
// private View Holder class
private class ViewHolder {
TextView tvNewsDate;
TextView TvNewsTitle;
}
public int getCount() {
return newss.size();
}
public Object getItem(int position) {
return newss.get(position);
}
public long getItemId(int position) {
return newss.indexOf(getItem(position));
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.news_item, null);
holder = new ViewHolder();
holder.tvNewsDate = (TextView) convertView.findViewById(R.id.tvNewsDate);
holder.TvNewsTitle = (TextView) convertView.findViewById(R.id.tvNewsTitle);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
News newss = (News) getItem(position);
holder.tvNewsDate.setText(newss.getDate());
holder.TvNewsTitle.setText(newss.getTitle());
return convertView;
}
} `
ImageView
с setOnClickListner
внутри моего другого адаптера с той же проблемой:
holder.ivGPS.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Uri gmmIntentUri = Uri.parse("google.navigation:q=" + parkCoordinates); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); context.startActivity(mapIntent); } });
Спасибо!
Hi @MikeM. добавлено, спасибо – FilipeOS
Я замечаю, что даже на моем другом адаптере (почти равном) это происходит внутри адаптера, когда я устанавливаю 'setOnClickListener' для' ImageView'. Можете ли вы привести пример? Я немного нуб. – FilipeOS
@MikeM. Можете ли вы проверить мой последний код, пожалуйста? Я не получаю эту должность, потому что она должна работать нормально? Так как он внутри адаптера. Он отображает всю информацию правильно, за исключением этого clickListener – FilipeOS