//我的xml代码
- <ScrollView
- android:id="@+id/scrollview"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_marginTop="35dp">
- <RelativeLayout
- android:id="@+id/relativeLayout2"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginBottom="5dp"
- android:layout_marginTop="5dp"
- android:background="@android:color/background_light"
- android:gravity="center"
- android:paddingBottom="5dp" >
- <TextView
- android:id="@+id/textView4"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignLeft="@+id/textView3"
- android:layout_below="@+id/textView3"
- android:text="Venue,Date"
- android:textSize="12sp" />
- <TextView
- android:id="@+id/textView5"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignLeft="@+id/textView4"
- android:layout_below="@+id/textView4"
- android:text="Description"
- android:textSize="12sp"
- android:paddingBottom="5dp" />
- <ImageView
- android:id="@+id/imageView7"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_below="@+id/textView2"
- android:layout_marginTop="14dp"
- android:src="@drawable/demo" />
- <TextView
- android:id="@+id/textView2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="5dp"
- android:text="Event of the Week" />
- <TextView
- android:id="@+id/textView3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_below="@+id/imageView7"
- android:layout_marginLeft="14dp"
- android:text="Event Name" />
- <GridView
- android:id="@+id/gridView1"
- android:layout_width="match_parent"
- android:layout_height="fill_parent"
- android:layout_alignParentLeft="true"
- android:layout_below="@+id/textView6"
- android:layout_marginTop="14dp"
- android:horizontalSpacing="10dp"
- android:numColumns="2"
- android:paddingBottom="5dp"
- android:verticalSpacing="10dp" />
- <TextView
- android:id="@+id/textView6"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/textView5"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="14dp"
- android:text="Today's Events" />
- </RelativeLayout>
- </ScrollView>
//主要活动
- class LoadProfile extends AsyncTask<String,String,String> {
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- pDialog = new ProgressDialog(EventHome.this);
- pDialog.setMessage("Loading...");
- pDialog.setIndeterminate(false);
- pDialog.setCancelable(false);
- pDialog.show();
- }
- protected String doInBackground(String... args) {
- // Building Parameters
- String json = null;
- PROFILE_URL = "http://www.example.com/filter_event_android.PHP?pin="+phone;
- try {
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- HttpClient httpclient = new DefaultHttpClient();
- HttpPost httppost = new HttpPost(PROFILE_URL);
- httppost.setEntity(new UrlEncodedFormEntity(params));
- // Execute HTTP Post Request
- HttpResponse response = httpclient.execute(httppost);
- HttpEntity resEntity = response.getEntity();
- json = EntityUtils.toString(resEntity);
- Log.i("All Events: ",json.toString());
- } catch (Exception e) {
- e.printStackTrace();
- }
- return json;
- }
- @SuppressLint("InlinedApi") @Override
- protected void onPostExecute(String json) {
- super.onPostExecute(json);
- pDialog.dismiss();
- try{
- event = new JSONObject(json);
- final ArrayList<HashMap<String,String>> arraylist = new ArrayList<HashMap<String,String>>();
- JSONArray user = event.getJSONArray("events");
- String contains=json.toString();
- if(contains.contains("id"))
- {
- for (int i = 0; i < user.length(); i++) {
- JSONObject object = user.getJSONObject(i);
- HashMap<String,String> map = new HashMap<String,String>();
- map.put("id",object.getString("id"));
- map.put("name",object.getString("name"));
- map.put("date_d",object.getString("date_d"));
- map.put("location",object.getString("location"));
- map.put("images","http://www.example.com/"+object.getString("images"));
- arraylist.add(map);
- }
- String[] from = {"name","date_d","location","images"};
- int[] to = {R.id.textView1,R.id.textView2,R.id.textView3,R.id.iv_flag};
- ListAdapter adapters = new MyAdapter(EventHome.this,arraylist,R.layout.list_event_home,from,to);
- gv1.setAdapter(adapters);
- }
- else
- {
- gv1.setVisibility(View.GONE);
- TextView dynamicTextView = new TextView(EventHome.this);
- dynamicTextView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
- dynamicTextView.setText("No events available");
- }
- gv1.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> arg0,View arg1,int arg2,long arg3) {
- // TODO Auto-generated method stub
- Intent i = new Intent(EventHome.this,EventSingle.class);
- i.putExtra("event_id",arraylist.get(arg2).get("id"));
- startActivity(i);
- }
- });
- }catch(Exception e)
- {
- e.printStackTrace();
- }
- }
- }
//MyAdapter.java
- public class MyAdapter extends SimpleAdapter{
- public MyAdapter(Context context,List<? extends Map<String,?>> data,int resource,String[] from,int[] to){
- super(context,data,resource,to);
- }
- public View getView(int position,View convertView,ViewGroup parent){
- // here you let SimpleAdapter built the view normally.
- View v = super.getView(position,convertView,parent);
- // Then we get reference for Picasso
- ImageView img = (ImageView) v.getTag();
- if(img == null){
- img = (ImageView) v.findViewById(R.id.iv_flag);
- v.setTag(img); // <<< THIS LINE !!!!
- }
- // get the url from the data you passed to the `Map`
- @SuppressWarnings("rawtypes")
- String url = (String) ((Map)getItem(position)).get("images");
- // do Picasso
- Picasso.with(v.getContext()).load(url).into(img);
- // return the view
- return v;
- }
- }
上面的布局在gridview中只显示了一行值.但是我对gridview有5个以上的值.为什么它没有显示其他值.我尝试了很多但没有用.有没有人有解决方案.
解决方法
这可能是由ScrollView中的GridView引起的.由于两个布局都是可滚动的,这会导致很多问题,在这种情况下,无法正确确定GridView的高度,并且ScrollView会使用滚动事件.
使用ListView,您可以简单地将ListView声明为根元素,然后将其他可滚动内容添加为页眉或页脚. GridView本身不支持这个,但幸运的是有HeaderGridView
的子类实现解决了这个问题.
你应该做的只是将HeaderGridView放到你的活动膨胀的xml中.
- <?xml version="1.0" encoding="utf-8"?>
- <your.package.HeaderGridView xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/gridView1"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignParentLeft="true"
- android:horizontalSpacing="10dp"
- android:numColumns="2"
- android:verticalSpacing="10dp" />
然后将RelativeLayout实现为不同xml中的标题视图(例如header.xml)
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/relativeLayout2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="5dp"
- android:layout_marginTop="5dp"
- android:background="@android:color/background_light"
- android:gravity="center"
- android:paddingBottom="5dp">
- <TextView
- android:id="@+id/textView4"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignLeft="@+id/textView3"
- android:layout_below="@+id/textView3"
- android:text="Venue,Date"
- android:textSize="12sp" />
- <TextView
- android:id="@+id/textView5"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignLeft="@+id/textView4"
- android:layout_below="@+id/textView4"
- android:text="Description"
- android:textSize="12sp"
- android:paddingBottom="5dp" />
- <ImageView
- android:id="@+id/imageView7"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_below="@+id/textView2"
- android:layout_marginTop="14dp"
- android:src="@drawable/demo" />
- <TextView
- android:id="@+id/textView2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="5dp"
- android:text="Event of the Week" />
- <TextView
- android:id="@+id/textView3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_below="@+id/imageView7"
- android:layout_marginLeft="14dp"
- android:text="Event Name" />
- <TextView
- android:id="@+id/textView6"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/textView5"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="14dp"
- android:text="Today's Events" />
- </RelativeLayout>
- HeaderGridView gridView = (HeaderGridView) findViewById(R.id.gridView1);
- View header = getLayoutInflater().inflate(R.layout.header,gridView,false);
- gridView.addHeaderView(header);
- // set adapter AFTER adding headerViews
- gridView.setAdapter(MyAdapter(...))
尝试过它,就像一个魅力.希望能帮助到你!