我有一个列表视图,它由来自单独布局文件的两个文本视图组成。我使用 aBaseAdapter
从 JSON 文件构建列表。
我希望第一个文本视图(标题)是可点击的,如果单击它会显示第二个文本视图(文本),如果再次单击它会隐藏它。
当我使用onClick
( android:onClick="ClText"
) 时,我得到一个错误。我想我应该使用一些东西onClickListener
,但由于我是 Android 新手,我不太确定如何使用它。
有人可以帮我写代码吗?
我有一个列表视图,它由来自单独布局文件的两个文本视图组成。我使用 aBaseAdapter
从 JSON 文件构建列表。
我希望第一个文本视图(标题)是可点击的,如果单击它会显示第二个文本视图(文本),如果再次单击它会隐藏它。
当我使用onClick
( android:onClick="ClText"
) 时,我得到一个错误。我想我应该使用一些东西onClickListener
,但由于我是 Android 新手,我不太确定如何使用它。
有人可以帮我写代码吗?
您只需为扩展 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;
}
}
这是一个关于如何在 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。
如果您只想在两个 textview 之间切换,您可以简单地使用 ViewSwitcher。它允许您在其中的视图之间切换。你只需要调用 nextView() 方法,这个方法是循环的,所以你可以无休止地调用 nextView()
您将能够更改显示的视图。
然后,您可以将相同的 onClickListener 添加到这些文本视图中,编写如下内容:
TextView txt = (TextView )findViewById(R.id.TextView1);
txt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewSwitcher.nextView();
}
});