2012-04-17 17 views
1

在我的應用程序中,我有ListView和適配器到我的ListView。我的項目ListView有兩個元素文本和圖像。現在我想分開文字並點擊圖片。如何在我的適配器Android中使用setOnClickListener?

public class MyAdapter extends ArrayAdapter<String> { 
private Activity context; 
private ArrayList<String> categories; 
public static boolean remove = true; 

public MyAdapter(Activity context, ArrayList<String> categories) { 
    super(context, R.layout.my_list_element, categories); 
    this.context = context; 
    this.categories = categories; 
} 

static class ViewHolder { 
    public TextView tvLanguage; 
    public ImageView remove; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View rowView = convertView; 
    if (rowView == null) { 
     LayoutInflater inflater = context.getLayoutInflater(); 
     rowView = inflater.inflate(R.layout.my_list_element, null); 
     ViewHolder viewHolder = new ViewHolder(); 
     viewHolder.tvLanguage = (TextView) rowView.findViewById(R.id.tvLanguage); 
     viewHolder.remove = (ImageView) rowView.findViewById(R.id.remove); 
     rowView.setTag(viewHolder); 
    } 
    ViewHolder holder = (ViewHolder) rowView.getTag(); 
    holder.tvLanguage.setText(categories.get(position)); 
    if(remove) 
     holder.remove.setVisibility(View.GONE); 
    else 
     holder.remove.setVisibility(View.VISIBLE); 
    return rowView; 
} 

我應該如何分離文本和圖像,併成功使用setOnClickListener兩個元素?

回答

4

修改第一塊是這樣的:

if (rowView == null) { 
     LayoutInflater inflater = context.getLayoutInflater(); 
     rowView = inflater.inflate(R.layout.my_list_element, null); 
     ViewHolder viewHolder = new ViewHolder(); 
     viewHolder.tvLanguage = (TextView) rowView.findViewById(R.id.tvLanguage); 
     viewHolder.remove = (ImageView) rowView.findViewById(R.id.remove); 
     rowView.setTag(viewHolder); 

     viewHolder.tvLanguage.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v){ 
       // handle your text view 
      } 
     }); 

     viewHolder.remove.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v){  
       // handle your imageview 
      } 
     }); 

} 
+0

謝謝,但我貼我的代碼來切換活動是不工作?一些技巧 ? – user1339609 2012-04-17 19:49:29

+0

不能理解你..你說你onClick從來沒有被稱爲..你切換你的活動內onClick事件? – 2012-04-17 19:53:40

+0

粘貼我的代碼,而不是/ /處理您的ImageView,這是我的代碼:Intent i = new Intent(this,AddRSS.class); startActivity(j); – user1339609 2012-04-17 20:09:29

0

嘗試標誌添加到您的意圖 這樣的:

Intent i = new Intent (this, AddRSS.class); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity (i); 

上面的代碼將開始活動,將成爲啓動歷史堆棧上的新任務。

如果這篇文章可以幫助你,請將此帖標記爲答案。

謝謝。

0

我解決我的問題:)我不能使用此代碼

Intent i = new Intent (this, AddRSS.class); 
startActivity (i); 

,因爲我的課MyAdapter沒有延伸活動,所以我不能使用的方法startActivity(我);

解決方法很簡單,我使用情境:

Intent i = new Intent (context, AddRSS.class); 
context.startActivity (i); 

和現在工作;)

相關問題