2

我有一个列表视图,它由来自单独布局文件的两个文本视图组成。我使用 aBaseAdapter从 JSON 文件构建列表。

我希望第一个文本视图(标题)是可点击的,如果单击它会显示第二个文本视图(文本),如果再次单击它会隐藏它。

当我使用onClick( android:onClick="ClText") 时,我得到一个错误。我想我应该使用一些东西onClickListener,但由于我是 Android 新手,我不太确定如何使用它。

有人可以帮我写代码吗?

4

3 回答 3

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;
    }
}
于 2012-12-07T19:59:02.767 回答
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。

于 2012-12-07T19:50:00.967 回答
0

如果您只想在两个 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();
}
});
于 2012-12-07T19:56:01.087 回答