如何访问列表中的第二个参数?

时间:2013-07-25 17:07:51

标签: android arraylist

我想知道如何访问列表中的第二项?我的意思是字符串输出:

07-17 21:15:38.723: D/MY APP(15806): {feeling=joyful}

但我只想读它"快乐"

这是我的代码:

公共类FeelingsMain扩展了Activity {

private static final String TAG = "MY APP";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initList();
    ListView lv = (ListView) findViewById(R.id.pageLayout);
    // design the listview with the adapter
    SimpleAdapter simpleAdpt = new SimpleAdapter(this, feelingsList,
            android.R.layout.simple_list_item_1,
            new String[] { "feeling" }, new int[] { android.R.id.text1 });

    lv.setAdapter(simpleAdpt);

    lv.setOnItemClickListener(viewNeeds);

}

List<Map<String, String>> feelingsList = new ArrayList<Map<String, String>>();

private void initList() {
    // populate the feelingsList
    feelingsList.add(createFeeling("feeling", "wonderful"));
    feelingsList.add(createFeeling("feeling", "content"));
    feelingsList.add(createFeeling("feeling", "joyful"));
    feelingsList.add(createFeeling("feeling", "tired"));
    feelingsList.add(createFeeling("feeling", "gay"));
    feelingsList.add(createFeeling("feeling", "sad"));
    feelingsList.add(createFeeling("feeling", "amazing"));

}

private HashMap<String, String> createFeeling(String key, String name) {
    HashMap<String, String> feeling = new HashMap<String, String>();
    feeling.put(key, name);

    return feeling;

}

OnItemClickListener viewNeeds = new OnItemClickListener() {


    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub
        // create variable for database input
        String feeling = feelingsList.get(arg2).toString();
        Log.d(TAG, feeling);

        Intent gotoNeeds = new Intent(FeelingsMain.this, Needs.class);
        gotoNeeds.putExtra("aFeeling", feeling);
        startActivity(gotoNeeds);
    }

};

与feelingList相同的字符串感觉给了我这个问题。是否有一些方法允许我访问数组的不同部分,get方法似乎只返回两个元素。

2 个答案:

答案 0 :(得分:1)

查看此链接:Android - Get value from HashMap

Map<String, String> map = new HashMap<String, String>();
map.put("Color1","Red");
map.put("Color2","Blue");
map.put("Color3","Green");
map.put("Color4","White");

 System.out.println(map);
 // {Color4=White, Color3=Green, Color1=Red, Color2=Blue}        

  System.out.println(map.get("Color2")); // Blue

 System.out.println(map.keySet());
  // [Color4, Color3, Color1, Color2]

for (Map.Entry<String,String> entry : map.entrySet()) {
   System.out.printf("%s -> %s%n", entry.getKey(), entry.getValue());
}
// Color4 -> White

// Color3 - &gt;绿色    // Color1 - &gt;红色    // Color2 - &gt;蓝色

The credit is for @polygenelubricants

答案 1 :(得分:0)

@Tobiel和其他人都是对的:使用HashMap.getValue(key)方法输出值。在你的情况下,它将是:

OnItemClickListener viewNeeds = new OnItemClickListener() {


@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {
    // TODO Auto-generated method stub
    // create variable for database input
    String feeling = feelingsList.get(arg2).get("feeling").toString();  // <<- changes here
    Log.d(TAG, feeling);

    Intent gotoNeeds = new Intent(FeelingsMain.this, Needs.class);
    gotoNeeds.putExtra("aFeeling", feeling);
    startActivity(gotoNeeds);
}

};