2015-05-24 89 views
0

我实现了一个自定义适配器来填充自定义ListView与一个image和2 TextField。现在我想要做的是添加新的行动态滚动列表。何可以做到这一点?将数据添加到自定义列表视图滚动列表

这是适配器

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; 

    }; 
} 

这是在列表中位于

@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

覆盖onScroll()方法在你的片段,其具有onCreateView()的的fragment的代码部分的代码,实施onScrollListener

将您的问题数组的字符串更改为ArrayList。您也可以为其他列表执行此操作。

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; 

}; 
} 

实施onScroll

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

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

,我怎么能追加我的数据? – Bella

+0

对你的数据做一些分页..分数据。那么你可以使用collection来追加数据。然后通知您的适配器。 – Android

+0

如果我的适配器扩展了ArrayAdapter ,我该如何追加数据。当我尝试在里面的方法里面做myadapter.addAll()时,我可以只放入String,而不是我想把更多的 – Bella

-1
@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(); 
    } 
+0

仅用代码发布答案不是答案。请解释代码。 –

+0

代码是明确的没有nead解释 –

+0

你可以解释你改变了什么,为什么这应该工作... –

相关问题