2017-06-05 49 views
-2

如何在List View中添加點擊監聽器,如果ListView已經在xml中有按鈕了?我想點擊按鈕打開新的活動。如何在List View中添加點擊監聽器,如果ListView已經在xml中有按鈕了?

這是我的代碼。 WashDetail.xml

 <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:gravity="center" 
      android:orientation="horizontal"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textColor="#000" 
       android:text="Malaber Hill" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="10dp" 
       android:layout_marginLeft="16dp" 
       android:layout_marginEnd="20dp" 
       android:text="Get Details" 
       android:id="@+id/gardetails" 
       android:textColor="#FFFFFF" 
       android:textSize="20dp" 
       android:textStyle="normal" 

       /> 
</LinearLayout> 

activity_wash_detail

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <ListView 
     android:layout_width="fill_parent" 
     android:id="@+id/ls" 
     android:layout_below="@+id/headerlay" 
     android:focusable="true" 
     android:clickable="true" 
     android:duplicateParentState="true" 
     android:focusableInTouchMode="true" 
     android:layout_height="fill_parent"> 
     </ListView> 
</LinearLayout> 

WashDetailActivity.java

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_wash_detail); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    listView = (ListView) findViewById(ls); 
    GetDetails=(Button)findViewById(R.id.gardetails); 
    Models = new ArrayList<>(); 
    Models.add(new WashDetailing(R.drawable.spl, "PP AUTOMATIVES", R.drawable.mahindra, "Authorized")); 
    adapter = new WashDetailingAdapter(Models, getApplicationContext()); 

    listView.setAdapter(adapter); 

    listView.setClickable(false); 



    gardetails.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) 
     { 
      Intent intent= new   Intent(getApplicationContext(),GarageDetailActivity.class); 
      startActivity(intent); 

     } 
    }); 
} 
+1

把你的適配器代碼在這裏 –

回答

0

我們做這樣的事情。但坦率地說你的問題我也不清楚。

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int 
position, long id) { 
     } 
    }); 
0

意思是你想要按鈕點擊裏面的listview,對嗎?

+0

是的,我想裏面添加列表視圖 –

+0

按鈕,點擊之後就可以使用在你的getView()方法的ListView適配器類中,作爲button.setOnClickListener(new View.OnClickLIstener(){Intent intent = new Intent(CurrentActivity.this,NextActivity.class); this.startActivity(意向); }) –

0

集適配器類

public View getView(final int position, View convertView, ViewGroup parent) { 

     ViewHolder holder = null; 

     // Inflater for custom layout 
     LayoutInflater inflater = (LayoutInflater)dContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.customer_list_layout, parent, false); 

      holder.gardetails = convertView.findViewById(R.id.gardetails); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.gardetails.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
Intent intent= new     Intent(getApplicationContext(),GarageDetailActivity.class); 
      dContext.startActivity(intent) 
      } 
     }); 
     return convertView; 
    } 

這裏的getView方法這個點擊監聽器是您ViewHolder類

私有類ViewHolder {

Button gardetails; 

}

0

使用自定義適配器像這樣

public class Custom_Adapter_Products extends BaseAdapter { 
    Context context; 
    Cursor mCursor; 
    static int[] intArr; 
    DatabaseAdapter db; 
    public ImageLoader imageLoader; 

    public Custom_Adapter_Products(Context context, Cursor mCursor){ 
     this.context = context; 
     this.mCursor = mCursor; 
     this.intArr = new int[this.mCursor.getCount()]; 
     imageLoader=new ImageLoader(context); 
    } 

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

    @Override 
    public Object getItem(int position) { 

     return null; 
    } 

    @Override 
    public long getItemId(int position) { 

     return position; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) {  
     try{    
       ViewHolder holder; 
       this.mCursor.moveToPosition(position); 
       LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       if (convertView == null) 
       { 
        convertView = vi.inflate(R.layout.lv_row_for_products, null); 
        holder = createViewHolder(convertView); 
        convertView.setTag(holder); 
        holder.btnMinus.setTag(holder); 
        holder.btnAdd.setTag(holder); 
       } 
       else 
       { 
        holder = (ViewHolder) convertView.getTag();     
       }   

       holder.btnMinus.setOnClickListener(new OnClickListener() {    
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        try{ 
         ViewHolder holder = (ViewHolder) v.getTag(); 
         // Do whatever you want 
        }catch (Exception e) { 
         // TODO: handle exception 
         e.printStackTrace(); 
        } 
       } 
      }); 

       holder.btnAdd.setOnClickListener(new OnClickListener() {     
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        try{ 
         ViewHolder holder = (ViewHolder) v.getTag(); 

        }catch (Exception e) { 
         // TODO: handle exception 
         e.printStackTrace(); 
        }} 
      }); 

      String strProductName = this.mCursor.getString(this.mCursor.getColumnIndex(DatabaseAdapter.PRODUCT_NAME)); 
      String strPrice = this.mCursor.getString(this.mCursor.getColumnIndex(DatabaseAdapter.PRICE));   
      String strMOQ = this.mCursor.getString(this.mCursor.getColumnIndex(DatabaseAdapter.MOQ)); 
      String strProductId = this.mCursor.getString(this.mCursor.getColumnIndex(DatabaseAdapter.PRODUCT_ID)); 
      String strMrp = this.mCursor.getString(this.mCursor.getColumnIndex(DatabaseAdapter.MRP)); 
      holder.tvProductName.setText(strProductName); 
      holder.tvPrice.setText(context.getString(R.string.Rupee)+" "+strPrice); 

     }catch (Exception e){ 
      // TODO: handle exception 
      e.printStackTrace(); 
     } 
     return convertView; 
    } 


    private static class ViewHolder 
    { 
     public TextView tvProductName; 
     public TextView tvPrice; 
     public TextView tvMRP; 
     public TextView tvMOQ; 
     public TextView tvPercent; 
     public TextView tvQuantity;  
     public ImageView imgProduct; 
     public ProgressBar pBar; 
     public Button btnMinus; 
     public Button btnAdd;  
    } 

    private ViewHolder createViewHolder(View v) { 
     ViewHolder holder = new ViewHolder(); 
     try{ 
      holder.tvProductName = (TextView) v.findViewById(R.id.tvProductName); 
      holder.tvPrice = (TextView) v.findViewById(R.id.tvPrice); 
      holder.tvMRP = (TextView) v.findViewById(R.id.tvMRP); 
      holder.tvMOQ = (TextView) v.findViewById(R.id.tvMOQ); 
      holder.tvQuantity = (TextView) v.findViewById(R.id.tvQuantity); 
      holder.imgProduct = (ImageView) v.findViewById(R.id.imgProduct); 
      holder.pBar = (ProgressBar) v.findViewById(R.id.img_pb); 
      holder.btnMinus = (Button) v.findViewById(R.id.btnMinus); 
      holder.btnAdd = (Button) v.findViewById(R.id.btnAdd); 
      holder.tvPercent = (TextView) v.findViewById(R.id.tvPercent); 
     }catch (Exception e) { 
     // TODO: handle exception 
      e.printStackTrace(); 
    } 
     return holder; 
    } 
} 
0

使用此代碼對你的列表視圖適配器類

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = context.getLayoutInflater(); 
    View listViewItem = inflater.inflate(R.layout.item_rating_rows, null, true); 
    Button btn = (Button) listViewItem.findViewById(R.id.btn); 

    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Log.d("__onclick", "" + view.getId()); 
     } 
    }); 
相關問題