2016-03-06 38 views
0

的行内TextView的文本,我有以下AdapterClass:如何使用按钮来改变onclicklistener列表视图

public class ItemListAdapter extends BaseAdapter { 

//My private ViewHolder class 
private static class ViewHolder 
{ 
    ImageButton plusButton; 
    ImageButton minusButton; 
    TextView item_name, item_price, item_quantity, item_count; 
    NetworkImageView networkImageView; 
} 
private static final String TAG = KindHeart.class.getSimpleName(); 
private Activity activity; 
private LayoutInflater inflater; 
private ArrayList<Items> itemsArrayList; 
ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 
int count = 0; 

public ItemListAdapter(Activity activity, ArrayList<Items> itemsArrayList) { 
    this.activity = activity; 
    this.itemsArrayList = itemsArrayList; 
} 

@Override 
public int getCount() {return itemsArrayList.size();} 

@Override 
public Object getItem(int position) { 
    return itemsArrayList.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    final ViewHolder viewHolder; 
    if (inflater == null) 
     inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    if (imageLoader == null) 
     imageLoader = AppController.getInstance().getImageLoader(); 


    if (convertView == null) 
    { 
     convertView = inflater.inflate(R.layout.items_row, null); 
     viewHolder = new ViewHolder(); 
     viewHolder.networkImageView = (NetworkImageView)convertView.findViewById(R.id.networkImageView); 
     viewHolder.item_name = (TextView)convertView.findViewById(R.id.item_name); 
     viewHolder.item_price = (TextView)convertView.findViewById(R.id.item_price); 
     viewHolder.item_quantity = (TextView)convertView.findViewById(R.id.item_quantity); 
     viewHolder.item_count = (TextView)convertView.findViewById(R.id.item_count); 
     viewHolder.item_count.setTag(position); 
     viewHolder.plusButton = (ImageButton)convertView.findViewById(R.id.plusButton); 
     viewHolder.plusButton.setTag(position); 
     viewHolder.minusButton = (ImageButton)convertView.findViewById(R.id.minusButton); 
     viewHolder.minusButton.setTag(position); 
     convertView.setTag(viewHolder); 
    } 
    else 
    { 
     viewHolder = (ViewHolder)convertView.getTag(); 
    } 
    //Setting item_data in item_row 
    //networkImageView.setImageUrl(item.getImage(),imageLoader); 
    Items item = itemsArrayList.get(position); 
    viewHolder.networkImageView.setImageUrl("", imageLoader); 
    viewHolder.item_name.setText(item.getName()); 
    viewHolder.item_price.setText("₹" + item.getPrice()); 
    viewHolder.item_quantity.setText(item.getQuantity()+"gm"); 
    viewHolder.plusButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      count++; 
      viewHolder.item_count.setText(count + ""); 
      notifyDataSetChanged(); 
     } 
    }); 
    /* 
    viewHolder.minusButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (a[position] > 0) 
       a[position]--; 
      //viewHolder.item_count.setText(a[position]); 
      //notifyDataSetChanged(); 
     } 
    });*/ 


    return convertView; 
} 

}

我想的是,当我点击加号按钮,我对应的文本视图'item_count'被更新。一切都很顺利,但是当我点击加号按钮时,列表中的多个文本视图被更新。我分享的截图:

1st half of list

2nd half of list

R.id.items_row:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout   xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="@drawable/list_row_selector" 
android:padding="8dp" 
> 

<!-- Thumbnail Image --> 
<com.android.volley.toolbox.NetworkImageView 
    android:id="@+id/networkImageView" 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    android:layout_alignParentLeft="true" 
    android:layout_marginRight="8dp" /> 

<!-- Item name --> 
<TextView 
    android:id="@+id/item_name" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/networkImageView" 
    android:layout_toRightOf="@+id/networkImageView" 
    android:textSize="@dimen/title" 
    android:textStyle="bold" 
    /> 

<!-- Item price --> 
<TextView 
    android:id="@+id/item_price" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="5dp" 
    android:layout_toRightOf="@+id/networkImageView" 
    android:layout_below="@+id/item_name" 
    android:textColor="@color/genre" 
    android:textSize="@dimen/genre" 
    /> 

<!-- Item quantity --> 
<TextView 
    android:id="@+id/item_quantity" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/networkImageView" 
    android:layout_below="@+id/item_price" 
    android:layout_marginTop="1dip" 
    android:textSize="@dimen/rating" 
    /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:gravity="right" 
    android:layout_toRightOf="@id/item_quantity" 
    android:layout_marginTop="10dp" 
    > 

<ImageButton 
    android:layout_margin="5dp" 
    android:id="@+id/plusButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/plus" 
    android:focusable="false" 
    android:background="@android:color/transparent" 
    android:focusableInTouchMode="false" 
    /> 

<TextView 
    android:layout_margin="1dp" 
    android:id="@+id/item_count" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="@color/year" 
    android:text="0" 
    android:layout_gravity="center_vertical" 
    android:textSize="@dimen/year" /> 

<ImageButton 
    android:layout_margin="5dp" 
    android:id="@+id/minusButton" 
    android:background="@android:color/transparent" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    android:src="@drawable/minus" 
    android:focusableInTouchMode="false" 
    /> 
</LinearLayout> 

</RelativeLayout> 

我试图使列表就像PepperTap应用已经得到了。请帮助我。你可以参考PepperTap应用程序来看看。 感谢和问候。

+0

你能添加R.layout.items_row – Ajinkya

+0

其实我这是没有观点持有者做相同的代码做到这一点从viewHolder.plusButton.setOnClickListener删除notifyDataSetChanged()尝试让我知道 – Ajinkya

+0

@Ajinkya前:所以,我应该删除ViewHolder?因为,我已经阅读过这个视图更好用了。 –

回答

0

刚上的onClick添加的setText的OnBindViewHolder 希望它能帮助:)

公共无效onBindViewHolder(DisplayTrainsAdapter.ViewHolder viewHolder,最终诠释位置){

viewHolder.tvSrc.setText(mDataset.get(position).strSrc); 
viewHolder.tvSrc.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //Main Trick 
     viewHolder.tvSrc.setText("Your text"); 
    } 
}); 
} 
+0

我也这么做。但不工作。那么,我不知道我会在哪里找到onBindViewHolder()方法。我使用我自己的ViewHolder类 –

相关问题