2

別のレイアウト ファイルからの 2 つのテキストビューで構成されるリストビューがあります。を使用しBaseAdapterて、JSON ファイルからリストを作成します。

最初のテキストビュー (キャプション) をクリック可能にしたいのですが、クリックすると 2 番目のテキストビュー (テキスト) が表示され、もう一度クリックすると非表示になります。

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

2 つの 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();
}
});
于 2012-12-07T19:56:01.087 に答える