1

アダプターを使用したカスタム listView があります。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    String player = playerList.get(position);
    View vi = convertView;
    String index = String.valueOf(position + 1);

    if (convertView == null) {
        holder = new ViewHolder();
        vi = inflater.inflate(R.layout.new_player_view, null);
        holder.text = (TextView) vi
                .findViewById(R.id.txtV_player_input_position_title);
        holder.edit = (Button) vi.findViewById(R.id.btn_Edit_Title);
        holder.edit.setOnClickListener(this);
        holder.text.setOnTouchListener(null);
        holder.text.setText((index) + ". " + player);
        vi.setOnTouchListener(null);
        vi.setTag(holder);
    } else {
        holder = (ViewHolder) vi.getTag();
        holder.text.setText((index) + ". " + player);
        holder.edit.setOnClickListener(this);
    }
    return vi;
}
@Override
public void onClick(View v) {
    TextView text = (TextView)v.getContext();
    String s = text.getText().toString();
    Intent intent = new Intent();
    intent.setClass(context, PlayerActivity.class);
    intent.putExtra("name", s);
    context.startActivity(intent);      
};

編集ボタンを押したときにカスタム ListView にある TextView からテキストを取得しようとしています (これも textView にあります)。私のonClickでは、テキストを取得して編集画面に渡したいので、ユーザーはテキストを編集してリストビューに戻ることができます。私の質問は、どのようにテキストを取得するのですか? 静的テキストを試してみましたが、そのように機能しますが、TextView からテキストを取得する方法がわかりません。ありがとう!

4

2 に答える 2

2

setOnItemClickListenerアクティビティクラスで使用する必要があります

    lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View v, int arg2,
            long arg3) 
    {

       TextView tv = (TextView) v.findViewById(R.id.txtV_player_input_position_title);
       String s = tv.getText().toString();
    }
    });

以下のリンクを試してください

Android: 複数のクリック可能なボタンを持つ ListView 要素

あなたのgetview

    holder.edit.setOnClickListener(mClickListener);   

それで

     private OnClickListener mClickListener = new OnClickListener() {
     @Override
     public void onClick(View v) {
     View view = (View) v.getParent();
     TextView tv = (TextView) view.findViewById(R.id.txtV_player_input_position_title);
     String s = tv.getText().toString();
     Intent intent = new Intent();
     intent.setClass(context, PlayerActivity.class);
     intent.putExtra("name", s);
     context.startActivity(intent);  
     }
 };  

編集:

ボタンをクリックするたびに初期化されるのを避けるためTextViewに、ボタンにタグを設定してタグを取得できます。このようにして、毎回テキストビューを初期化することを避けます。

于 2013-06-30T08:06:34.180 に答える
0

あなたの中でこのようにしてみてくださいOnItemClick

 TextView text = (TextView) arg1.findViewById(R.id.ID_OF_YOUR_TEXTVIEW); //arg1 is the View
 String val= text.getText().toString();
于 2013-06-30T08:18:12.733 に答える