我有一个问题......现在已经考虑了一段时间并且一直在寻找并且还没有提出明确的解释......
我有很多文本视图,并为每个文本视图设置了onClickListeners。当用户点击其中一个时,我希望他们能够将文本更改为我创建的另一组字符串数组选项progammatically。当用户选择选项时,文本应更改为他们选择的选项。 (即,TextView是A,现在它是B.希望这有意义..无论如何......)
当前的解决方案是将OnClickListener设置为每个TextView,当有人按下它时,会显示一个单独的对话框。但是我发现,如果我这样做,代码就会花费很长时间才能编码,所以我希望有人能用更优雅的方式编写如此长的过程=(
所以我想我的问题是... 1)有没有办法可以找出按下哪个文本视图,然后在单个方法中更改TextView的文本?为了节省我必须编写1000个警报对话框......
答案 0 :(得分:2)
执行所需操作的方法之一是使用文本视图setTag()
和getTag()
方法。
在文本视图的init
上,使用setTag()
设置一些值来标识视图。
在on click事件中,使用view参数上的getTag()
来了解单击了哪个视图。
答案 1 :(得分:2)
我建议你使用网格视图。 您可以看到按下这样的文本视图:
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
//get id
switch (v.getId()) {
case R.id.textView1: ...
}
});
答案 2 :(得分:0)
对所有文本使用set id,其中设置id为正整数(distinct),然后在视图上单击一个侦听器(全部设置),其中u捕获所有文本视图点击(带有textview的向下转换视图)并在其旁边放置一个开关盒,用于处理单击文本视图的点击。
答案 3 :(得分:0)
我建议将textviews保存在数组中,如下所示:
TextView[] textViewArray = new TextView[textViewCount];
然后使用for循环为每个分配一个整数标记 - 它的位置
textViewArray.setTag(i)
并为每一个添加一个onClickListener,再次使用for循环:
textviewArray[i].setOnClickListener(etc...)
然后,当单击一个时,您可以使用获取被单击的视图的位置。这将需要您的自定义方法:
textviewArray.setOnClickListener(new customOnClickListener())
customOnClickListner的位置如下:
private class customOnClickListener implements CompoundButton.{
public void OnClick(View view){
int position = (Integer) view.getTag()
///Do more code here - your processing
}
}
希望有道理:) 对于你的for循环,你可以使用for(i = 0,i
答案 4 :(得分:0)
您必须在所有textview上设置“onClickListner”。 为了节省一些代码长度,我建议你创建一个对话框的函数,并给它一些int参数,它将直接由textview的clickListener调用, 喜欢,
int i=0;
......
textView1 = (TextView)findViewById(R.id.yourtextview1);
textView2 = (TextView)findViewById(R.id.yourtextview2);
......
......
// and so on, for your all textviews
@Override
public void onClick(View view) {
if (view.equals(textView1)) {
i = 1;
CustomDialog(i);
}
//Similarly for all your textViews..
..........
创建一个函数CustomDialog Like
public void CustomDialog(int i){
if(i==1){
//Do something
}
}