0

ListView の OnClickListener があります。

onClickListener でこれらのことをしたい:
1- 行内のテキスト ボックスではなく、行全体に対して onClickListener を定義します。
2-行がクリックされたとき、どの行がクリックされたか知りたいですか?

これは、テキストボックスで onClickListener を処理するために行ったことです。

private OnClickListener onClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        String item = ((TextView)v).getText().toString();
        Toast.makeText(context, "SHIT Happened", Toast.LENGTH_SHORT).show();
    }
};

これは私のgetViewメソッドです:

public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
    View row = inflater.inflate(R.layout.news_row, parent,false);
    TextView title =  (TextView) row.findViewById(R.id.txtTitle);
    TextView date = (TextView) row.findViewById(R.id.txtDate);

    News temp = list.get(position);
    title.setText(temp.getTitle());
    date.setText(temp.getsDate());

    title.setOnClickListener(onClickListener);
    return row;
}   

これはレイアウトです:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/newsRow"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/txtTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:width="210dp"/>

            <TextView
                android:id="@+id/txtDate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:width="100dp"/>

            <TextView
                android:id="@+id/txtNewsID"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="invisible"
                android:width="100dp"/>
            </LinearLayout>

</RelativeLayout>

LinearLayoutのonClickListenerを作成する必要があると思いますが、それを行ったとき、テキストボックスの値にアクセスする方法がわかりませんでした。

4

2 に答える 2

3

書く代わりに、あなたのリストビューのために書きOnClickListener()ます。例えば ​​:OnItemClickListener()

listView.setOnItemClickListener(new OnItemClickListener()
{
      @Override
      public void onItemClick(AdapterView<?> arg0, View view, int pos,
                          long arg3) {

        Log.v("position--", ""+pos); 
        //Here pos is the position of row clicked   

      }
});
于 2013-10-26T10:16:00.767 に答える
0

AdapterView.OnItemClickListenerListViewに を追加する必要があります。listView.setOnItemClickListener(YourOnItemClickListener);

次に、リストビューのxml属性で、これらのプロパティを設定します-

 android:clickable="true"
 android:focusable="false" 

そしてあなたのR.layout.news_row-

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:descendantFocusability="blocksDescendants"       
     >


  //other views

</RelativeLayout>

これらのプロパティは、リストビュー行で発生したイベントを 内のすべての子ビューに渡しますR.layout.news_row

詳細については、これを読むことをお勧めます。

于 2013-10-26T12:35:08.770 に答える