Add data to custom ListView scrolling list

主宰稳场 提交于 2019-12-25 04:34:40

问题


I implemented a custom adapter to fill a custom ListView with one image and 2 TextField. Now what I want to do is to add new rows dynamically scrolling down the list. Ho can I do achieve this results?

This is the code of the adapter

public class CustomListAdapter extends ArrayAdapter<String> {

    private final Activity context;
    private final String[] itemname;
    private final Integer[] imgid;
    private final String[] questions;

    public CustomListAdapter(Activity context, String[] itemname, Integer[] imgid, String[] questions) {
        super(context, R.layout.mylist, itemname);
        // TODO Auto-generated constructor stub

        this.context = context;
        this.itemname = itemname;
        this.imgid = imgid;
        this.questions=questions;
    }

    public View getView(int position, View view, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.mylist, null, true);
        rowView.setPadding(0,10,0,10);

        TextView txtTitle = (TextView) rowView.findViewById(R.id.nameList);
        txtTitle.setTextColor(Color.BLACK);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.imgList);
        TextView extratxt = (TextView) rowView.findViewById(R.id.question);

        txtTitle.setText(itemname[position]);
        imageView.setImageDrawable(new RoundImage(BitmapFactory.decodeResource(context.getResources(), imgid[position])));
        //imageView.setImageResource(imgid[position]);
        extratxt.setText(questions[position]);
        return rowView;

    };
}

this is part of the code of the fragment in which the list is located

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedBundle) {
     this.adapter=new CustomListAdapter(getActivity(), itemname, imgid, questions);
            list=(ListView)firstAccessView.findViewById(R.id.list);
            list.setAdapter(adapter);

            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {


    //stuff
      @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            // TODO Auto-generated method stub
            String Slecteditem= itemname[+position];
            Toast.makeText(getActivity().getApplicationContext(), Slecteditem, Toast.LENGTH_SHORT).show();

        }
    });
}

回答1:


override onScroll() method in your fragment which has onCreateView(), implement onScrollListener.

Changing your questions array of string to ArrayList. you can do it for other lists as well.

private ArrayList<String> questions;

public CustomListAdapter(Activity context, String[] itemname, Integer[] imgid, ArrayList<String> questions) {
    super(context, R.layout.mylist, itemname);
    // TODO Auto-generated constructor stub

    this.context = context;
    this.itemname = itemname;
    this.imgid = imgid;
    this.questions=questions;
}

public View getView(int position, View view, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.mylist, null, true);
    rowView.setPadding(0,10,0,10);

    TextView txtTitle = (TextView) rowView.findViewById(R.id.nameList);
    txtTitle.setTextColor(Color.BLACK);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.imgList);
    TextView extratxt = (TextView) rowView.findViewById(R.id.question);

    txtTitle.setText(itemname[position]);
    imageView.setImageDrawable(new RoundImage(BitmapFactory.decodeResource(context.getResources(), imgid[position])));
    //imageView.setImageResource(imgid[position]);
    extratxt.setText(questions.get(position));
    return rowView;

};
}

implementation of onScroll

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
        int visibleItemCount, int totalItemCount) {

//load your new set of data here.
your_adapter.notifyDataSetChanged();
}



回答2:


@Override
    public void onScroll(AbsListView view, int firstVisibleItem,
            int visibleItemCount, int totalItemCount) {

    //loadMoreData

    //if using arrayAdapter, use this
     for (String i: itemname) {
         adapter.add(i);
     }
    adapter.notifyDataSetChanged();
    }


来源:https://stackoverflow.com/questions/30422353/add-data-to-custom-listview-scrolling-list

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!