1

各行に textView とボタンを含むリストビューがあります。行全体をクリックするのではなく、adapterView メソッドをクリックしてボタンをクリックしてテキストを取得しようとしています:(AdapterView arg0, View v,int position, long arg3)ボタンのクリックでは機能しません。

public View getView(int position, View convertView, ViewGroup parent) {
        //Set the view for each item in the list view
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.employeeitem, null);
        }
        //Get the Textviews from the row view and set the appropriate values for them
        TextView labelName=(TextView) v.findViewById(R.id.labelName);
        TextView labelAddress=(TextView)v.findViewById(R.id.labelAddress);
        TextView labelImmat=(TextView)v.findViewById(R.id.labelImmat);
        labelName.setText(array[position].marque);
        labelAddress.setText(array[position].categorie);
       labelImmat.setText(array[position].Prix_Achats);
        return v;
    }

これは、リストビューの行をクリックして項目を選択する方法ですが、行全体ではなくボタンをクリックして項目を選択したいです:

listEmployeeDetails.setOnItemClickListener(new OnItemClickListener(){

           public void onItemClick(AdapterView<?> arg0, View v,int position, long arg3)
     {

             TextView tv=(TextView)v.findViewById(R.id.labelName);
             String name=tv.getText().toString();


             Toast.makeText(getApplicationContext(), "Contact Selected "+name, Toast.LENGTH_LONG).show();
     }
    });
4

6 に答える 6

2

ボタンに onClickListener を設定します。

Button button = (Button) getActivity().findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
       // button was clicked
    }

});
于 2013-06-23T14:09:23.717 に答える
1

ボタンにタグを設定して、メソッドからアクセスすることができますgetView()。タグには、プログラムまたは xml を介してアイテムを宣言するときに、アイテムのテキストを格納できます。

public View getView(int position, View convertView, ViewGroup parent) {
    //Set the view for each item in the list view
    View v = convertView;
    //Do your view stuff here
    Button btn = (Button)v.findViewById(R.id.your_button_id);
    btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            String str = (String)v.getTag();
            //Do whatever you want with your str here
        }
    });
    return v;
}
于 2013-07-29T16:45:57.810 に答える
1

ボタンをクリックして textview からテキストを取得する

    btn.setTag(textView.getText().toString());
btn.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub


        String s =(String)v.getTag();


    }
});
于 2014-05-20T06:58:39.040 に答える
0
listView2.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            Toast.makeText(getApplicationContext(), "Clicked "+parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();

        }

    });

parent.getItemAtPosition(position).toString()

このメソッドは、その位置で現在選択されている項目を返します

于 2013-10-29T11:30:19.580 に答える
-1

この問題を解決するのに 3 日かかりましたが、解決策は明らかでした。私のリストはSQL使用してサーバーから膨らませJSONArrayられており、getView()メソッドで行う必要があったのは、jsonOjbect で膨らませた後、単純にTextViewボタンに渡すことでした。setTag()次に、ボタンのonClick()メソッドでタグを取得する必要がありました。コードを見てください。お役に立てば幸いです。

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

   ListCell cell;//ListCell is my widgets class holder

    //set up the convertView

    if(convertView==null){

        convertView=inflater.inflate(R.layout.menu_custom_layout, null);
        cell=new ListCell();
        cell.Diet=(TextView)convertView.findViewById(R.id.dietEat); //Diet is the custom list layout textview
        cell.eatButton=(Button)convertView.findViewById(R.id.eatButtton); //eatButton is the button to be clicked
        cell.eatButton.setOnClickListener(this);

    }else{
        cell=(ListCell)convertView.getTag();

    }

    //Change data of each cell
    try {

        JSONObject jsonObject=this.dataArray.getJSONObject(position);
        cell.Diet.setText(jsonObject.getString("food_name"));
        cell.eatButton.setTag(cell.Diet.getText()); //Tag for button's onclick Listener

    } catch (JSONException e) {

        e.printStackTrace();

    }

    return convertView;
}

                @Override
public void onClick(View v) {

String fud=(String) v.getTag(); //Getting the tag and parsing it to string

}
于 2015-03-20T05:42:21.890 に答える