我有一个listview,它是由一个单独的布局文件构建的两个textview。我使用BaseAdapter
从JSON文件构建列表。
我希望第一个textview(Caption)是可点击的,如果点击它显示第二个textview(文本),如果再次点击它隐藏它。
当我使用onClick
(android:onClick="ClText"
)时,我收到错误消息。我想我应该使用onClickListener
的东西,但由于我是Android的新手,我不太确定如何使用它。
有人可以帮我解决一下代码吗?
答案 0 :(得分:1)
您只需要为扩展BaseAdapter的适配器类的getView方法中的第一个项设置onClickListener。这是一个例子来说明你想要做的事情。
public class CustomAdapter extends BaseAdapter{
private ArrayList<Thing> mThingArray;
public CustomAdapter(ArrayList<Thing> thingArray) {
mThingArray = thingArray;
}
// Get the data item associated with the specified position in the data set.
@Override
public Object getItem(int position) {
return thingArray.get(position);
}
// Get a View that displays the data at the specified position in the data set.
// You can either create a View manually or inflate it from an XML layout file.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
// LayoutInflater class is used to instantiate layout XML file into its corresponding View objects.
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.one_of_list, null);
}
TextView captionTextView = (TextView) convertView.findViewById(R.id.caption);
TextView txt2 = (TextView)findViewById(R.id.text);
captionTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(txt2.getVisibility() == View.INVISIBLE){
txt2.setVisibility(View.VISIBLE);
} else {
txt2.setVisibility(View.INVISIBLE);
}
}
});
return convertView;
}
}
答案 1 :(得分:0)
以下是如何使用带有java的单击侦听器的示例:
TextView txt = (TextView )findViewById(R.id.TextView1);
TextView txt2 = (TextView )findViewById(R.id.TextView2);
txt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txt.setVisibility(View.GONE);
txt2.setVisibility(View.VISIBLE);
}
});
老实说,为什么不改变TextView文本,而不是改变不同textView的可见性?它会更简单,不需要多个TextView。
答案 2 :(得分:0)
如果您只想在两个textview之间切换,只需使用ViewSwitcher即可。它允许您在进入它的视图之间切换。你只需要调用nextView()方法并且这个方法是循环的,所以你可以无休止地调用nextView()
您将能够更改显示的视图。
然后你可以添加相同的onClickListener到textview写这样的东西:
TextView txt = (TextView )findViewById(R.id.TextView1);
txt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewSwitcher.nextView();
}
});