1

私のアプリケーションでは、ListView と ListView へのアダプターがあります。私の項目 ListView には、Text と Image の 2 つの要素があります。ここで、テキストを分離して画像をクリックします。

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

テキストと画像を分離し、2 つの要素で setOnClickListener を使用して成功するにはどうすればよいですか?

4

3 に答える 3

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
           }
        });

}
于 2012-04-17T19:43:28.583 に答える
0

私は私の問題を解決しました:)私はこのコードを使用できません

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

私のクラス MyAdapter は Activity を拡張しないため、メソッド startActivity(i); を使用できませんでした。

解決策は簡単です、私は context を使用します:

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

そして今動作します;)

于 2012-04-18T16:45:13.727 に答える
0

次のように、インテントにフラグを追加してみてください。

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

上記のコードはアクティビティを開始し、履歴スタックで新しいタスクの開始になります。

于 2012-04-18T02:07:30.067 に答える