更改列表视图中textview的可见性

时间:2012-12-07 19:38:09

标签: android listview onclick visibility

我有一个listview,它是由一个单独的布局文件构建的两个textview。我使用BaseAdapter从JSON文件构建列表。

我希望第一个textview(Caption)是可点击的,如果点击它显示第二个textview(文本),如果再次点击它隐藏它。

当我使用onClickandroid:onClick="ClText")时,我收到错误消息。我想我应该使用onClickListener的东西,但由于我是Android的新手,我不太确定如何使用它。

有人可以帮我解决一下代码吗?

3 个答案:

答案 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();
}
});