2016-07-12 3 views
0

listView에서 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

입니다.

@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; 

} 
} 
관련 문제