Android,Custom ListAdapter获取TextView-Text

Rip*_*pei 7 android listview adapter

我编写了一个自己的Adapter并通过ListView将它添加到我的ListActivity中.我编写自己的适配器的原因是,我必须对list-entrys进行一些布局更改.在列表的每个条目中,我有3个TextView.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<TextView
    android:id="@+id/myNr"
    android:layout_width="40dip"
    android:layout_height="fill_parent"
    android:layout_marginRight="15dip"
    android:text="id" 
    android:textSize="25dip"
    android:background="#333333"
    android:gravity="center_horizontal"/>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="0dip"
    android:layout_weight="1"
    android:layout_height="fill_parent">
    <TextView
        android:id="@+id/editor"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:text="Editor: " />
    <TextView
        android:id="@+id/date"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1" 
        android:singleLine="true"
        android:ellipsize="marquee"
        android:text="Date: " />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我做的下一件事是实现"onListItemClick-Methode".之后我使用以下代码实现了一个onListItemLongClick - Listener:

在onCreate of the Activity中我添加了:

 registerForContextMenu(getListView());
Run Code Online (Sandbox Code Playgroud)

然后我添加了以下方法:

Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo){
         AdapterView.AdapterContextMenuInfo info;
         info = (AdapterView.AdapterContextMenuInfo) menuInfo;
            long id = getListAdapter().getItemId(info.position);
        }
Run Code Online (Sandbox Code Playgroud)

其中"id"是列表中项目的索引.我现在想要获得texview的文本,其id ="myNr of this ListItem.有没有办法得到这个文本?

Dav*_*und 18

view 是列表项,所以你可以这样做

String s =(String) ((TextView) view.findViewById(R.id.myNr)).getText();
Run Code Online (Sandbox Code Playgroud)


小智 9

只取文本视图的参考,如果你伸出的BaseAdapter

Listener = new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {

TextView tx =(TextView)view.findViewById(R.id.text);
            String s = tx.getText().toString();
            Log.d(TAG, "string : "+s);
Run Code Online (Sandbox Code Playgroud)


Rip*_*pei 6

嘿伙计我发现了另一种设置ItemLongClickListener的方法.因此我也找到了一种方法来获取我正在显示的文本.

ListView lv = getListView();
lv.setOnItemLongClickListener(new OnItemLongClickListener(){
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int row, long arg3) {
   String[] tmp = (String[]) arg0.getItemAtPosition(row);
   //tmp[0] ist the Text of the first TextView displayed by the  clicked ListItem 
   return true;
   }});
Run Code Online (Sandbox Code Playgroud)