从自定义 ListView 中的 TextView -w/Button 获取文本
Posted
技术标签:
【中文标题】从自定义 ListView 中的 TextView -w/Button 获取文本【英文标题】:Get Text from TextView -w/Button in custom ListView 【发布时间】:2013-06-27 14:58:30 【问题描述】:我有一个带有适配器的自定义 listView:
@Override
public View getView(int position, View convertView, ViewGroup parent)
ViewHolder holder;
String player = playerList.get(position);
View vi = convertView;
String index = String.valueOf(position + 1);
if (convertView == null)
holder = new ViewHolder();
vi = inflater.inflate(R.layout.new_player_view, null);
holder.text = (TextView) vi
.findViewById(R.id.txtV_player_input_position_title);
holder.edit = (Button) vi.findViewById(R.id.btn_Edit_Title);
holder.edit.setOnClickListener(this);
holder.text.setOnTouchListener(null);
holder.text.setText((index) + ". " + player);
vi.setOnTouchListener(null);
vi.setTag(holder);
else
holder = (ViewHolder) vi.getTag();
holder.text.setText((index) + ". " + player);
holder.edit.setOnClickListener(this);
return vi;
@Override
public void onClick(View v)
TextView text = (TextView)v.getContext();
String s = text.getText().toString();
Intent intent = new Intent();
intent.setClass(context, PlayerActivity.class);
intent.putExtra("name", s);
context.startActivity(intent);
;
当我点击编辑按钮(也在 textView 中)时,我试图从自定义 ListView 中的 TextView 中获取文本。在我的 onClick 中 - 我想获取文本并将其传递到编辑屏幕,以便用户可以编辑文本并返回到列表视图。我的问题是如何获取文本?我试过静态文本,它就是这样工作的,但我不知道如何从 TextView 中获取文本。谢谢!
【问题讨论】:
【参考方案1】:你需要在你的活动类中使用setOnItemClickListener
lv.setOnItemClickListener(new OnItemClickListener()
public void onItemClick(AdapterView<?> arg0, View v, int arg2,
long arg3)
TextView tv = (TextView) v.findViewById(R.id.txtV_player_input_position_title);
String s = tv.getText().toString();
);
试试下面的链接
android: ListView elements with multiple clickable buttons
在你的getview
holder.edit.setOnClickListener(mClickListener);
然后
private OnClickListener mClickListener = new OnClickListener()
@Override
public void onClick(View v)
View view = (View) v.getParent();
TextView tv = (TextView) view.findViewById(R.id.txtV_player_input_position_title);
String s = tv.getText().toString();
Intent intent = new Intent();
intent.setClass(context, PlayerActivity.class);
intent.putExtra("name", s);
context.startActivity(intent);
;
编辑:
为避免在每次单击按钮时初始化TextView
,您可以为按钮设置标签并获取标签。这样可以避免每次都初始化 textview。
【讨论】:
我将此设置为我的活动类,但它没有改变任何东西。我的 onclick 正在工作,但我无法从同一行中的 textView 获取文本。我将对 OnItemClickListener 进行更多研究。我还没有遇到过这个。我是 Java 新手,这是我在 Android 中的第二个项目。感谢您的回复。 第一种方法将在单击 lsitview 的行时起作用。 @Raghunandan 怎么了? @blackbelt 每次单击按钮时都会初始化 textview。这效率高吗?或者有解决办法。每次在 op 的案例编辑按钮中单击按钮。然后你得到父视图初始化textview,然后得到文本。所以我担心效率。 由于目的是在单击按钮时获取字符串,因此您可以将其作为按钮的标记。这样你就可以避免 findviewbyid。 onItemClick 没有被触发吗?【参考方案2】:在你的OnItemClick
里面试试这个
TextView text = (TextView) arg1.findViewById(R.id.ID_OF_YOUR_TEXTVIEW); //arg1 is the View
String val= text.getText().toString();
【讨论】:
以上是关于从自定义 ListView 中的 TextView -w/Button 获取文本的主要内容,如果未能解决你的问题,请参考以下文章
我缺少啥来启用从自定义适配器到 ListView 的详细信息传输?
Ellipsize 不适用于自定义 listView 中的 textView
如何从自定义 ListView 适配器传递 Intent Extra?