2

リストビューでクリックされた要素から文字列データを取得しています。

要素には2つの行があり、1つは「current」という名前で、もう1つは「name」という名前です。私のlistItemOnClick()で、クリックされたアイテムを取得し、それに対してtoString()を実行しています。私が得ているものは次のようなものです:

{current=SOMETHING, name=SOMETHING}

私の質問は、これらをどのように分離するのですか?これが私のonclickコードです:

    protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    Object o = this.getListAdapter().getItem(position);
    String current = o.toString();

    ((TextView) findViewById(R.id.check)).setText(current);
}

たとえば、電流だけを表示したい。ありがとう!

編集

マイリスト変数:

    static final ArrayList<HashMap<String,String>> listItems = 
        new ArrayList<HashMap<String,String>>();;
SimpleAdapter adapter;

リストの作成:

       for(int i=0; i<num_enter; i++){
    final int gi = i;
    adapter=new SimpleAdapter(this, listItems, R.layout.custom_row_view,new String[]{"name", "current"},  new int[] {R.id.text1, R.id.text2});
    setListAdapter(adapter);
    HashMap<String,String> temp = new HashMap<String,String>();
    temp.put("name", name[i]);
    temp.put("current", "Value: " + Integer.toString(current[i]));
    listItems.add(temp);
    adapter.notifyDataSetChanged();
    }
4

3 に答える 3

4

あなたはそのようにそれを行うことができます(フォーマットが変更された場合/場合は醜くて将来のエラーが発生しやすくなります)-文字列が正しいフォーマットを持っていない場合のエラーチェックを追加します:

String s = "{current=CURRENT, name=NAME}";
s = s.substring(1, s.length() - 1); //removes { and }
String[] items = s.split(",");
String current = items[0].split("=")[1]; //CURRENT
String name = items[1].split("=")[1]; //NAME

編集後、oはマップのように見えるので、次のように書くこともできます(はるかに優れています)。

Map<String, String> map = (Map<String, String>) this.getListAdapter().getItem(position);
String current = map.get("current");
String name = map.get("name");
于 2012-05-09T15:51:02.383 に答える
3

うわー、誰もが長い道のりを歩んでいます。ビューから直接データを取得します。この場合のビューvはレイアウト行であるため、を使用して個々findViewByIdのテキストビューを検索し、それらからテキストを取得できます。コードを使用すると、次のようになります。

protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

    TextView nameTxt = (TextView) v.findViewById(R.id.Text1);
    TextView currentTxt = (TextView) v.findViewById(R.id.Text2);
    String name = nameTxt.getText().toString();
    String current = currentTxt.getText().toString();
}

お役に立てれば!

于 2012-05-09T16:02:05.277 に答える
0

それほど難しいことではありません。

protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Object o = this.getListAdapter().getItem(position);
String current = o.toString();

// first remove the first and last brace
current = current.substring(1,current.length()-1);
// then split on a comma
String[] elements = current.split(",");
// now for every element split on =
String[] subelements = elements[0].split("=");
String key1 = subelements[0];
String value1 = subelements[1];

subelements = elements[1].split("=");
String key2 = subelements[0];
String value2 = subelements[1];


((TextView) findViewById(R.id.check)).setText(current);
}
于 2012-05-09T15:56:04.043 に答える