2013-07-12 286 views
0

我从数据库中获取数据并将其放入数组中。数组包含代码(int)和描述(字符串)。代码位于gridview中,我希望如果有人单击代码,则实际描述应该显示在一个新的activity.i已经使用OnItemclicklistener,但不知道如何从数组中只获取字符串显示一个新的活动。 “我想,从ArrayList中的代码应该第一个屏幕上进行印刷,并点击时的说明会在新的活性的TextView打印”从ArrayList获取字符串

private void show_data() { 
    final GridView gv = (GridView) findViewById(R.id.gridView); 
    // final ListView listview = (ListView) findViewById(R.id.listView1); 
    final Database_handler db = new Database_handler(this); 
    Cursor cur = db.fetchAllData(); 
    final ArrayList<String> array_list = new ArrayList<String>(); 
    if (cur.moveToFirst()) { 
     do { 
      array_list.add(cur.getString(0)); 
      array_list.add(cur.getString(1)); 
     } while (cur.moveToNext()); 
    } 
    final StableArrayAdapter adapter = new StableArrayAdapter(this, 
      android.R.layout.simple_list_item_1, array_list); 
    // listview.setAdapter(adapter); 
    gv.setAdapter(adapter); 

    gv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, 
           int position, long id) { 
        /*SOME CODE*/ } 

这是Stablearrayadapter类

public class StableArrayAdapter extends ArrayAdapter<String> { 
HashMap<String, Integer> mIdMap = new HashMap<String, Integer>(); 

public StableArrayAdapter(Context context, int textViewResourceId, List<String> objects) { 
    super(context, textViewResourceId, objects); 
    for (int i = 0; i < objects.size(); ++i) { 
     mIdMap.put(objects.get(i), i); 
    } 
} 

XML类

<?xml version="1.0" encoding="utf-8"?> 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

<TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView_descrip" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="70dp" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="50dp"/> 
      </RelativeLayout> 

activty为了描述

public class desc_view extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); //To change body of overridden methods use File | Settings | File Templates. 
    setContentView(R.layout.desc_view); 
    /* try { 
     Intent recv = getIntent(); 
     ArrayList<String> array_list_recvd = recv.getStringArrayListExtra("array_list2"); 
     int intValue = recv.getIntExtra("intVariableName", 0); 
     TextView tv = (TextView) findViewById(R.id.textView_descrip); 
     tv.setText(array_list_recvd.get(intValue)); 
     setContentView(tv); 
    } catch (Exception e) { 
     Log.d("Error Second :", e.toString()); 
    }*/ 
} 

}

回答

0

你应该使用ArrayList中的Map<String,String>

ArrayList<Map<String,String>> array_list = new ArrayList<Map<String,String>>(); 

if (cur.moveToFirst()) { 
    do { 
     Map<String,String> map=new HashMap<String,String>(); 
     map.put("code",cur.getString(0)); 
     map.put("desc",cur.getString(1)); 

     array_list.add(map); 

    } while (cur.moveToNext()); 
} 

和itemClick在

String desc=list.get(position).get("desc"); 
+0

它不会显示任何东西在GridView的@Samir甚至代码。 –

+0

尝试在游标中打印数据do ... while循环可能为空并检查您是否使用右列阵列表 –