Bài đăng này có liên quan đến điều này ViewHolder not working. Trên bài đăng đó, tôi đã làm theo hướng dẫn về cách sử dụng ViewHolder
trên ListView
. Những gì tôi muốn bây giờ là có mục cuối cùng trên ListView
để có bố cục khác so với phần còn lại. Dưới đây là mã của tôi:Bố cục hàng khác nhau trong ListView
int lastpos = mList.size()-1;
System.out.println("position: "+position+" mlist: "+lastpos);
if(position==lastpos){
view = vi.inflate(R.layout.list_item_record, null);
holder.textView = (TextView)view.findViewById(R.id.record_view);
}else{
view = vi.inflate(R.layout.list_item_bn, null);
holder.textView = (TextView)view.findViewById(R.id.tv_name);
}
view.setTag(holder);
tôi chỉ nhận được ListView
kích thước trừ 1
và có một điều kiện để kiểm tra nếu vị trí hiện tại bằng với mục cuối cùng. Tuy nhiên, mã này đặt bố cục của mục cuối cùng giống như phần còn lại. getView
phương thức đầy đủ mã:
private class CustomListAdapter extends ArrayAdapter {
private ArrayList mList;
private Context mContext;
public CustomListAdapter(Context context, int textViewResourceId,
ArrayList list) {
super(context, textViewResourceId, list);
this.mList = list;
this.mContext = context;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
final ToggleButton tb;
if (view == null) {
ViewHolder holder = new ViewHolder();
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int lastpos = mList.size()-1;
System.out.println("position: "+position+" mlist: "+lastpos);
if(position==lastpos){
view = vi.inflate(R.layout.list_item_record, null);
holder.textView = (TextView)view.findViewById(R.id.record_view);
}else{
view = vi.inflate(R.layout.list_item_bn, null);
holder.textView = (TextView)view.findViewById(R.id.tv_name);
}
view.setTag(holder);
}
final ItemsDisplay listItem = (ItemsDisplay) mList.get(position);
if (listItem != null) {
ViewHolder holder1 = (ViewHolder)view.getTag();
holder1.textView.setText(listItem.getTag());
view.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) { //--clickOnListItem
Toast.makeText(getBaseContext(),
"Button is "+position+" "+listItem.getTag(),
Toast.LENGTH_LONG).show();
}
});
tb = (ToggleButton) view.findViewById(R.id.toggleButton);
tb.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(tb.isChecked()){
Toast.makeText(getBaseContext(),
"Button is "+position+" checked:"+tb.isChecked()+" "+listItem.getTag(),
Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getBaseContext(),
"Button is "+position+" checked:"+tb.isChecked()+" "+listItem.getTag(),
Toast.LENGTH_LONG).show();
}
}
});
}
return view;
}
}
Ai có thể giúp tôi với điều này?
dán mã bộ chuyển đổi đầy đủ của bạn ... –
thêm. thats mã đầy đủ. – antonoVodka
nếu vòng lặp gọi là kiểm tra như if (...) {Syso ("in if loop")} –