我想在列表视图中显示一些项目。问题在于列表视图仅在列表视图的第一位置显示最后一项。它显示了编号。项正确,但其余位置保持空白。
MainActivit.java
ListView topicList;
ArrayList<Topics> topics;
ArrayList<Topics> topicsArrayList;
TopicAdapter topicAdapter;
//Inside onCreat method
topicList = findViewById(R.id.lv_list);
//Array list to show items in the list view
topics = new ArrayList<>();
topicAdapter = new TopicAdapter(this, R.layout.list_item_row, topics);
topicList.setAdapter(topicAdapter);
//Array list to add the list items
topicsArrayList = new ArrayList<>();
Topics vumika = new Topics();
vumika.setTopicName("Vumika");
topicsArrayList.add(vumika);
Topics prachin_yug = new Topics();
vumika.setTopicName("Prachin Yug");
topicsArrayList.add(prachin_yug);
Topics madhya_yug = new Topics();
vumika.setTopicName("Madhya Yug");
topicsArrayList.add(madhya_yug);
Topics adhunik_yug = new Topics();
vumika.setTopicName("Adhunik Yug");
topicsArrayList.add(adhunik_yug);
//Add all the topics to the topic list
if (topicsArrayList != null || topicsArrayList.size() > 0) {
topics.addAll(topicsArrayList);
topicAdapter.notifyDataSetChanged();
}
TopicAdapter.java
类
public class TopicAdapter extends BaseAdapter {
private Context context;
private int layout;
private ArrayList<Topics> topics;
private ViewHolder viewHolder;
public TopicAdapter(Context context, int layout, ArrayList<Topics> topics) {
this.context = context;
this.layout = layout;
this.topics = topics;
}
public TopicAdapter(Context context, int layout, ArrayList<Topics> topics, ViewHolder viewHolder) {
this.context = context;
this.layout = layout;
this.topics = topics;
this.viewHolder = viewHolder;
}
@Override
public int getCount() {
return topics.size();
}
@Override
public Object getItem(int position) {
return topics.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
viewHolder = new ViewHolder();
if (row == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (inflater != null) {
row = inflater.inflate(layout, null);
viewHolder.topicName = row.findViewById(R.id.tv_topic_name);
row.setTag(viewHolder);
}
} else {
viewHolder = (ViewHolder) row.getTag();
}
Topics topic = topics.get(position);
viewHolder.topicName.setText(topic.getTopicName());
return row;
}
private class ViewHolder {
TextView topicName;
}
}
答案 0 :(得分:3)
它显示最后一项,因为您反复使用vumika.setTopicName()
setter方法。您必须为每个新的Topics对象设置名称。
正确的是
Topics vumika = new Topics();
vumika.setTopicName("Vumika");
topicsArrayList.add(vumika);
Topics prachin_yug = new Topics();
prachin_yug.setTopicName("Prachin Yug");
topicsArrayList.add(prachin_yug);
Topics madhya_yug = new Topics();
madhya_yug.setTopicName("Madhya Yug");
topicsArrayList.add(madhya_yug);
Topics adhunik_yug = new Topics();
adhunik_yug.setTopicName("Adhunik Yug");
topicsArrayList.add(adhunik_yug);
答案 1 :(得分:3)
第一个主题Topics vumika = new Topics();
每次通过更改其名称而被添加到topicsArrayList
,。这样就反映了姓氏。因此,使用以下命令:-
vumika.setTopicName("Adhunik Yug");
是写在vumika
中的姓氏
Topics vumika = new Topics();
vumika.setTopicName("Vumika");
topicsArrayList.add(vumika);
Topics prachin_yug = new Topics();
prachin_yug.setTopicName("Prachin Yug");
topicsArrayList.add(prachin_yug);
Topics madhya_yug = new Topics();
madhya_yug.setTopicName("Madhya Yug");
topicsArrayList.add(madhya_yug);
Topics adhunik_yug = new Topics();
adhunik_yug.setTopicName("Adhunik Yug");
topicsArrayList.add(adhunik_yug);
答案 2 :(得分:3)
存在复制粘贴错误,仅vumika
处于更改状态,更改如下
topics = new ArrayList<>();
topicAdapter = new TopicAdapter(this, R.layout.list_item_row, topics);
topicList.setAdapter(topicAdapter);
//Array list to add the list items
topicsArrayList = new ArrayList<>();
Topics vumika = new Topics();
vumika.setTopicName("Vumika");
topicsArrayList.add(vumika);
Topics prachin_yug = new Topics();
prachin_yug.setTopicName("Prachin Yug");
topicsArrayList.add(prachin_yug);
Topics madhya_yug = new Topics();
madhya_yug.setTopicName("Madhya Yug");
topicsArrayList.add(madhya_yug);
Topics adhunik_yug = new Topics();
adhunik_yug.setTopicName("Adhunik Yug");
topicsArrayList.add(adhunik_yug);