2013-05-06 131 views
0

当我在Sony Xperia上尝试复制ListView内的TextView内容时出现问题。Android - 在列表视图中选择TextView

这是我的列表视图:

<ListView 
    android:id="@+id/list_1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:cacheColorHint="@android:color/transparent" 
    android:divider="#00000000" 
    android:listSelector="@android:color/transparent"/> 

这是我LIST_ITEM:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TextView 
    android:layout_width="match_parent" 
    android:id="@+id/editText1" android:layout_height="wrap_content" /> 

</LinearLayout> 

而且我的代码:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ListView list = (ListView) findViewById(R.id.list_1); 
    ArrayList<String> data = new ArrayList<String>(); 
    data.add("AAAAAAAAA"); 
    data.add("BBBBBBBBBB"); 
    data.add("CCCCCCCC"); 
    data.add("DDDDDDDDD"); 
    list.setAdapter(new MyAdapter(data)); 
} 

这是我的适配器:

private class MyAdapter extends BaseAdapter{ 
    private ArrayList<String> mData; 
    public MyAdapter (ArrayList<String> data){ 
     super(); 
     mData = data; 
    } 
    @Override 
    public int getCount() { 
     return mData.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return mData.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if(convertView == null) { 
      convertView = getLayoutInflater().inflate(
        R.layout.list_item, parent, false); 
     } 
     String str = mData.get(position); 
     TextView tv = (TextView) convertView.findViewById(R.id.editText1); 
     tv.setText(str); 
     tv.setTextIsSelectable(true); 
     return convertView; 
    } 
} 

我在某些线程上发现setTextIsSelectable(true)将允许在TextView上复制文本,但看起来像是在ListView中的TextView不工作。

你们能帮我解决吗?

+0

更手动的实现可能有帮助吗?只需在textview上设置onclicklistener并通过剪贴板管理器将文本复制到剪贴板。当然你需要设置可点击的textview为真 – 2013-05-06 03:02:40

+0

感谢Chor,但我不想复制所有文本,只是它的一部分,就像本地复制/粘贴一样 – kairen 2013-05-06 03:40:05

回答

0

你试过把这个放在你的TextView组件上:android:textIsSelectable =“true”?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TextView 
    android:layout_width="match_parent" 
    android:id="@+id/editText1" android:layout_height="wrap_content" 
android:textIsSelectable="true" 
/> 

</LinearLayout> 
+0

是的,我甚至在使用它之前尝试它我的代码 – kairen 2013-05-06 03:37:53

+0

尝试将代码放入不在java代码中的xml中,并告诉发生了什么。我测试了一切正确 – 2013-05-06 04:17:44

+0

你测试过索尼Xperia吗?我注意到这个问题只发生在索尼Xperia上,你的代码在三星Galaxy S3,HTC OneX等其他设备上工作正常 – kairen 2013-05-06 06:57:52

相关问题