Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1075672
  • 博文数量: 77
  • 博客积分: 821
  • 博客等级: 军士长
  • 技术积分: 1905
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-23 16:17
个人简介

学校:上海交通大学软件工程 学历:硕士 行业:从事流媒体移动开发 QQ: 412595942 邮箱:yiikai1987910@gmail.com

文章分类

全部博文(77)

文章存档

2016年(4)

2015年(15)

2014年(16)

2013年(12)

2012年(21)

2011年(9)

分类: Android平台

2015-04-20 10:57:37

    在实现baseAdapter子类的时候,重载了getview方法来实现自己的Adapter对象,但是在debug的过程中发现,这个getview会不停的被调用,导致了listview中显示不出我们需要的东西。
   关键问题,在于我们没有给设定listview的长度是多少,所以无法来确定到底需要绘制多少我们自定的view在listview中,所以我们需要在布局文件中对于listview的高度进行设定,可以选择fill_parent或者设定数值高度。
   

点击(此处)折叠或打开

  1. <LinearLayout xmlns:android=""
  2.     xmlns:tools="" android:layout_width="match_parent"
  3.     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
  4.     android:paddingRight="@dimen/activity_horizontal_margin"
  5.     android:paddingTop="@dimen/activity_vertical_margin"
  6.     android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

  7.     <TextView
  8.         android:layout_width="fill_parent"
  9.         android:layout_height="wrap_content"
  10.         android:id="@+id/appBar"
  11.         android:layout_weight="1"/>
  12.     <!--<LinearLayout-->
  13.         <!--android:layout_width="fill_parent"-->
  14.         <!--android:layout_height="wrap_content"-->
  15.         <!-->-->
  16.         <ListView
  17.             android:layout_width="fill_parent"
  18.             android:layout_height="50dip"
  19.             android:id="@+id/listview" />
  20.         <!--</LinearLayout>-->

  21.     <TextView
  22.         android:layout_width="fill_parent"
  23.         android:layout_height="wrap_content"
  24.         android:id="@+id/rank"
  25.         android:layout_weight="1"/>
  26. </LinearLayout>
   这样再设置自己的Adapter时候就可以正确显示了
  上代码:
   

点击(此处)折叠或打开

  1. package com.example.dolby.webviewtest;

  2. import android.content.Context;
  3. import android.support.v7.app.ActionBarActivity;
  4. import android.os.Bundle;
  5. import android.util.Log;
  6. import android.view.Menu;
  7. import android.view.MenuItem;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.ArrayAdapter;
  11. import android.widget.BaseAdapter;
  12. import android.widget.ListView;
  13. import android.widget.TextView;

  14. import com.android.volley.Request;
  15. import com.android.volley.RequestQueue;
  16. import com.android.volley.Response;
  17. import com.android.volley.VolleyError;
  18. import com.android.volley.toolbox.JsonArrayRequest;
  19. import com.android.volley.toolbox.JsonObjectRequest;
  20. import com.android.volley.toolbox.Volley;

  21. import org.json.JSONArray;
  22. import org.json.JSONObject;
  23. import org.w3c.dom.Text;

  24. import java.util.ArrayList;
  25. import java.util.Date;


  26. //class jobinfo
  27. //{
  28. // public String url;
  29. // public String name;
  30. //}

  31. public class MainActivity extends ActionBarActivity {

  32.     private TextView text;
  33.     private ListView infolist;
  34.     private ArrayList<JSONObject> jsData;
  35.     @Override
  36.     protected void onCreate(Bundle savedInstanceState) {
  37.         super.onCreate(savedInstanceState);
  38.         setContentView(R.layout.activity_main);
  39.         text = (TextView)findViewById(R.id.appBar);
  40.         jsData = new ArrayList<JSONObject>();
  41.         infolist = (ListView)findViewById(R.id.listview);
  42.         startLoadInfo();


  43.     }


  44.     @Override
  45.     public boolean onCreateOptionsMenu(Menu menu) {
  46.         // Inflate the menu; this adds items to the action bar if it is present.
  47.         getMenuInflater().inflate(R.menu.menu_main, menu);
  48.         return true;
  49.     }

  50.     @Override
  51.     public boolean onOptionsItemSelected(MenuItem item) {
  52.         // Handle action bar item clicks here. The action bar will
  53.         // automatically handle clicks on the Home/Up button, so long
  54.         // as you specify a parent activity in AndroidManifest.xml.
  55.         int id = item.getItemId();

  56.         //noinspection SimplifiableIfStatement
  57.         if (id == R.id.action_settings) {
  58.             return true;
  59.         }

  60.         return super.onOptionsItemSelected(item);
  61.     }

  62.     private void startLoadInfo()
  63.     {
  64.         RequestQueue queue = Volley.newRequestQueue(this);
  65.         String jsonurl = "http://jobdev.sinaapp.com/api/getinfoList";
  66.         JsonArrayRequest jsRequest = new JsonArrayRequest(jsonurl,new Response.Listener<JSONArray>() {
  67.             @Override
  68.             public void onResponse(JSONArray response) {
  69.                 //Log.d("first is " , "" + response.getJSONObject(0));
  70.                 try{
  71.                     //text.setText(response.getJSONObject(0).getString("name"));
  72.                     for(int i = 0; i < response.length() ; i++)
  73.                     {
  74.                         jsData.add(response.getJSONObject(i));
  75.                     }
  76.                     jsonAdapter adapter = new jsonAdapter(MainActivity.this);
  77.                     infolist.setAdapter(adapter);

  78.                 }
  79.                 catch(Exception e)
  80.                 {
  81.                     Log.d("json get exception",e.getMessage());
  82.                 }

  83.             }

  84.         },new Response.ErrorListener() {
  85.             @Override
  86.             public void onErrorResponse(VolleyError error) {
  87.                 Log.d("json Request Error",error.getMessage());
  88.             }
  89.         });
  90.         queue.add(jsRequest);
  91.     }

  92.     class jsonAdapter extends BaseAdapter
  93.     {
  94.         Context m_context;
  95.         public jsonAdapter(Context context)
  96.         {
  97.             super();
  98.             m_context = context;
  99.         }
  100.         @Override
  101.         public int getCount(){
  102.             return jsData.size();
  103.         }

  104.         @Override
  105.         public Object getItem(int position) {
  106.             return null;
  107.         }

  108.         @Override
  109.         public long getItemId(int position) {
  110.             return 0;
  111.         }

  112.         @Override
  113.         public View getView(int position, View convertView, ViewGroup parent) {
  114.             TextView view = new TextView(m_context);
  115.             String name = "";
  116.             try{
  117.                 name = jsData.get(position).getString("name");
  118.             }catch(Exception e){
  119.                 Log.d("haha error exception","nick");
  120.             }
  121.             view.setText(name);
  122.             return view;
  123.         }
  124.     }
  125. }

阅读(10928) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~