ListView показывает только последний элемент в первой позиции ListView - PullRequest
0 голосов
/ 29 мая 2019

Я хочу показать некоторые элементы в виде списка.Проблема в том, что в представлении списка отображается только последний элемент в первой позиции представления списка.Это показывает нет.из пунктов правильно, но оставшиеся позиции остаются пустыми.

Не могу понять, где я делаю неправильно.Любая помощь, пожалуйста?Я прилагаю скриншот здесь Screenshot

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;
    }
}

Ответы [ 3 ]

3 голосов
/ 29 мая 2019

Первая тема 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);
3 голосов
/ 29 мая 2019

Ошибка копирования и вставки, меняется только 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);
3 голосов
/ 29 мая 2019

Показывает последний элемент, потому что вы неоднократно используете метод установки vumika.setTopicName().Вы должны установить имя для каждого нового объекта Темы.

Правильный

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);
...