2014-02-05 68 views
2

我有一个自定义列表,其中每行都有一个图像视图和一个文本视图以及两个按钮。如何知道自定义列表中单击哪个按钮

|```````````| text box 
|Image View | 
|___________| Button1 Button2 

它是一排列表的布局。 我定制AdapterClass是..

public class sublist extends ArrayAdapter<String> { 

    private final Activity context; 
    private final Vector<String> shortDisJornals; 
    private final Vector<String> imageId1; 

    public sublist(Activity context, Vector<String> s1, 
      Vector<String> imageId1) { 
     super(context, R.layout.sublist, s1); 
     this.context = context; 
     this.shortDisJornals = s1; 
     this.imageId1 = imageId1; 
     Log.d("image vector", ""+imageId1); 

    } 

    @Override 
    public View getView(final int position, View view, ViewGroup parent) { 
     LayoutInflater inflater = context.getLayoutInflater(); 
     View rowView = inflater.inflate(R.layout.sublist, null, true); 
     TextView txtTitle = (TextView) rowView 
       .findViewById(R.id.textViewjurnals); 
     ImageView imageView = (ImageView) rowView 
       .findViewById(R.id.imageViewJurnals); 
     Button buyJurnals=(Button)rowView.findViewById(R.id.buttonjurnalsBuy); 
     buyJurnals.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getContext(), "sdsd"+position, 3000).show(); 
      } 
     }); 
     Button detailsJurnalis=(Button)rowView.findViewById(R.id.buttonjrnalsDetails); 
     txtTitle.setText(shortDisJornals.elementAt(position)); 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
     .permitAll().build(); 

     StrictMode.setThreadPolicy(policy); 
     String image = imageId1.elementAt(position); 
     try { 
     Bitmap bitmap = BitmapFactory.decodeStream((InputStream) new URL(
       image).getContent()); 
      imageView.setImageBitmap(null); 
       imageView.setImageBitmap(bitmap); 
       // setContentView(image); 
       } catch (MalformedURLException e) { 
       e.printStackTrace(); 
       } catch (IOException e) { 
       e.printStackTrace(); 
       }catch(Exception e){} 


     return rowView; 


    } 
} 
在我的主要活动

现在 -

lv = (ListView) findViewById(R.id.listView1); 
titleVector = new Vector<String>(); 
imageUrl = new Vector<String>(); 
lv.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { 
    Toast.makeText(getApplicationContext(), "sd", 3000).show(); 

    } 
}); 

但敬酒时,我按一下按钮

+0

检查此http://stackoverflow.com/a/12813906/1168654 –

+0

你可以告诉你是否希望单击按钮或lsitview行的侦听器。它的混乱和不明确。 – Raghunandan

回答

0

要设置一个onClickListener对的一剂不显示按钮:buttonjurnalsBuy。点击这个按钮应该可以工作。只需为另一个按钮设置另一个监听器来处理对该按钮的点击。

如果单击列表中的整行,则会调用在setOnItemClickListener中设置的侦听器。

如果您为某些视图设置单独的点击侦听器并且设置了OnItemClickListener,则如果用户单击其中一个视图,则会调用点击侦听器。如果用户单击行中的其他位置,则会调用OnItemClickListener。

+0

当您单击列表行时,imageview无法获得焦点。所以敬酒不显示! – Raghunandan

+0

如果点击不是由行中的某个视图处理的,则应调用OnItemClickListener。 – Janusz

相关问题