2016-07-12 15 views
0

listViewを取得しようとすると、listViewの各項目に対応するボタンがあります。たとえば、リストに商品がある場合は、ボタンをクリックするとそのボタンをクリックして特定の商品の情報を表示します。どのようにして、リストビューの各項目に応じて動作するように、ボタンのアダプタにクリックリスナーを追加できますか?listViewの各項目のカスタムアダプターにボタンを追加する

これは私のカスタムアレイアダプタです。

public class MyAdapter extends BaseAdapter { 
private Context mContext; 
private List<Bean> mList; 

public MyAdapter(Context context,List<Bean> list){ 
    mContext=context; 
    mList=list; 
} 

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

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

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

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    //use convertView recycle 
    if(convertView==null){ 
     holder=new ViewHolder(); 
     convertView = LayoutInflater.from(mContext).inflate(R.layout.content_orders, parent, false); 
     holder.textView= (TextView) convertView.findViewById(R.id.textView2); 
     holder.imageView= (ImageView) convertView.findViewById(R.id.imageView2); 
     convertView.setTag(holder); 
    }else{ 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    //set text and url 
    holder.textView.setText(mList.get(position).getText()); 
    Picasso.with(mContext).load(mList.get(position).getUrl()).resize(500,500).into(holder.imageView); 

    return convertView; 
} 

class ViewHolder{ 
    TextView textView; 
    ImageView imageView; 

} 
} 

そして、これが私のボタンである

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Information" 
    android:id="@+id/button5" 
    android:layout_below="@+id/button4" 
    android:layout_alignRight="@+id/button4" 
    android:layout_alignEnd="@+id/button4" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 
+0

TextViewとImageViewを追加したのと同じ方法でListViewの行にボタンを追加します。何か問題ある? –

+0

xmlファイルcontent_ordersにボタンを追加し、それをカスタムアダプタViewHolderに追加し、ListViewのすべての行にボタンが含まれます。 – DAVIDBALAS1

答えて

1

のTextViewとImageViewのを使用して行レイアウトにボタン表示を入れてください。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    //use convertView recycle 
    if(convertView==null){ 
     holder=new ViewHolder(); 
     convertView = LayoutInflater.from(mContext).inflate(R.layout.content_orders, parent, false); 
     holder.textView= (TextView) convertView.findViewById(R.id.textView2); 
     holder.imageView= (ImageView) convertView.findViewById(R.id.imageView2); 
     convertView.setTag(holder); 
    }else{ 
     holder = (ViewHolder) convertView.getTag(); 
    } 
holder.clickableButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       //Code goes here 

      } 
     }); 

    //set text and url 
    holder.textView.setText(mList.get(position).getText()); 
    Picasso.with(mContext).load(mList.get(position).getUrl()).resize(500,500).into(holder.imageView); 

    return convertView; 
} 
+0

この回答は奇妙ですが、clickableButtonを宣言し、それにビューホルダーをバインドしたところです。 –

1

getView()のボタンにクリックリスナーを追加できます。次に、「所有者」への参照を使用して、あなたが望むアイテムの特定のアクションをカスタマイズすることができます。

0

指定したボタンのxmlコードがcontent_ordersレイアウト内にある場合。コードは次のようになります

public class MyAdapter extends BaseAdapter { 
private Context mContext; 
private List<Bean> mList; 

public MyAdapter(Context context,List<Bean> list){ 
    mContext=context; 
    mList=list; 
    } 

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

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

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

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    //use convertView recycle 
    if(convertView==null){ 
    holder=new ViewHolder(); 
    convertView = LayoutInflater.from(mContext).inflate(R.layout.content_orders, parent, false); 
    holder.textView= (TextView) convertView.findViewById(R.id.textView2); 
    holder.imageView= (ImageView) convertView.findViewById(R.id.imageView2); 
holder.btn= (Button) convertView.findViewById(R.id.button5); 
    convertView.setTag(holder); 
}else{ 
    holder = (ViewHolder) convertView.getTag(); 
} 

//set text and url 
holder.textView.setText(mList.get(position).getText()); 
Picasso.with(mContext).load(mList.get(position).getUrl()).resize(500,500).into(holder.imageView); 

holder.btn.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    // do something 
Toast.makeText(mContext,String.valueOf(position),Toast.LENGTH_SHORT).show(); 
    } 
}); 

    return convertView; 
} 

class ViewHolder{ 
    TextView textView; 
    ImageView imageView; 
    Button btn; 

} 
} 
関連する問題