0

リストビューに longClick を実装しようとしましたが、編集テキストフィールドでのみ longClick を取得します: textView でのみ longClick を取得するにはどうすればよいですか?

ありがとう、ダニエレ


その他の詳細:

  • メイン レイアウトは「activity_main.xml」で、リスト ビューの「listView_listData」には「RigaAdvAdapter」クラスの「row.xml」レイアウトを配置しました。
  • レイアウト「row.xml」には、textView と editText の 2 つのフィールドがあります。
  • 行に表示するデータを格納するために ArrayList を使用しました (コンマで区切られています - 例: "viewTextValue,editTextValue");
  • より多くのオプションを提供するには、各行で longClick を取得する必要があります。
  • editTextにlongClickは必要ありません。そうしないと、コピーと貼り付けが機能しません。
  • 将来、さらに多くのデータが必要になるので、ArrayList の配列を使用します。

########################## レイアウト: activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_toRightOf="@+id/textView1"
    android:orientation="vertical" >
    <ListView
        android:id="@+id/listView_listData"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:descendantFocusability="beforeDescendants"
        android:listSelector="@drawable/list_selector"
        android:fadingEdge="none" >
    </ListView>
</LinearLayout>
########################## レイアウト: row.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:shrinkColumns="*"  android:stretchColumns="*" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent">

    <TableRow
        android:id="@+id/RelativeLayout_rowData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/textViewField"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:padding="3dip"
            android:layout_width="0dp"
            android:textColor="#666666"
            android:focusable="false" />

        <EditText
            android:id="@+id/editTextField"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:inputType="text">
            <requestFocus />
        </EditText>
    </TableRow>
</TableLayout>

主な活動

public class MainActivity extends Activity
    {
    ArrayList<String> arrayDataSource= new ArrayList<String>();

    ...
    I fill the array "arrayDataSource" with a string as "text,another text"
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState)
        {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView listView_listData  =(ListView)findViewById(R.id.listView_listData);
        listView_listData.setAdapter(new RigaAdvAdapter());

        listView_listData.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
            {
            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int pos, long arg3)
                {
                mostraToast("hh long click"+String.valueOf(pos));
                return true;
                }
            });
        }

アダプタ クラス

    public class RigaAdvAdapter extends BaseAdapter
        {
        @Override
        public int getCount() {return arrayDataSource.size();}
        @Override
        public Object getItem(int position) {return position;}
        @Override
        public long getItemId(int position) {return position;}
        @Override
        public View getView(int position, View convertView, ViewGroup parent)
            {
            if (convertView == null)
                {
                LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(R.layout.row, null);
                }

            TextView textViewField = (TextView)convertView.findViewById(R.id.textViewField);
            EditText editTextField = (EditText)convertView.findViewById(R.id.editTextField);

            String StringData=arrayDataSource.get(position);
            String[] ArrayStringData=StringData.split(",",-1);

            String textViewField_val=ArrayStringData[0];
            String editTextField_val=ArrayStringData[1];
            textViewField.setText(textViewField_val);
            editTextField.setText(editTextField_val);

            return convertView;
            }
        }
4

3 に答える 3

1

ListViewに設定する代わりにlongclick、TextView.In RigaAdvAdapter クラスに設定する必要があります。これを追加する必要があります

  textViewField.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            // TODO Auto-generated method stub
            return false;
        }
    });
于 2013-10-28T11:06:53.583 に答える
1

edittext プロパティ set clickable および focusable を false に設定してみてください。Editttext を追加したので、常に最初のフォーカスとタッチ イベントを取得します。

また、Longclick イベントを追加するにはTextView、アダプター クラス内に longclick リスナーを実装する必要があります。

     @Override
    public View getView(int position, View convertView, ViewGroup parent)
        {
        if (convertView == null)
            {
            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.row, null);
            }

        TextView textViewField = (TextView)convertView.findViewById(R.id.textViewField);
        EditText editTextField = (EditText)convertView.findViewById(R.id.editTextField);

    textViewField.setOnLongClickListener(new OnLongClickListener() {

       @Override
        public boolean onLongClick(View v) {
        // TODO Auto-generated method stub
            return false;
        }
     });
        String StringData=arrayDataSource.get(position);
        String[] ArrayStringData=StringData.split(",",-1);

        String textViewField_val=ArrayStringData[0];
        String editTextField_val=ArrayStringData[1];
        textViewField.setText(textViewField_val);
        editTextField.setText(editTextField_val);

        return convertView;
        }
于 2013-10-28T11:10:11.967 に答える
0

アダプターの getView メソッド内で onItemLongClickListener を使用する必要があります。この質問はAndroidを助けることができます:ListViewのリスト項目でボタンのonClickイベントを設定する方法

于 2013-10-28T11:15:35.457 に答える