2014-11-08 126 views
0

我想填充一個列表視圖與id android.id/list與一些XML數據..數據被成功請求,並且當我將它傳遞給我的Lazy適配器並設置它時我沒有得到任何錯誤到listview ..有人可以幫助我嗎?Android listview沒有被填充

請求:

private void requestFeed() { 

    SimpleXmlRequest<StationList> simpleRequest = new SimpleXmlRequest<StationList>(Request.Method.GET, url, StationList.class, 
      new Response.Listener<StationList>() 
      { 
       @Override 
       public void onResponse(StationList response) { 

        list = response.getStationList(); 
        buildFeed(); 

        if(mSplashDialog != null) { 
         removeSplashScreen(); 
        } else { 
         setReloadFeedButtonState(false); 
        } 
       } 
      }, 
      new Response.ErrorListener() 
      { 
       @Override 
       public void onErrorResponse(VolleyError error) {         
        // error Object 
        Log.d("TESTE", error.toString()); 
       } 
      } 
     ); 

    simpleRequest.setTag(SIMPLE_TAG); 
    queue = Volley.newRequestQueue(this); 
    queue.add(simpleRequest); 
} 

的buildFeed:

private void buildFeed() { 

    if(stations == null) { 
     stations = (ListView) findViewById(android.R.id.list); 
     adapter = new LazyAdapter(this, list); 
     stations.setAdapter(adapter); 
    } 

    adapter.notifyDataSetChanged(); 

} 

適配器:

public class LazyAdapter extends BaseAdapter { 

private List<Station> stations; 
private static LayoutInflater inflater = null; 

public LazyAdapter(Activity activity, List<Station> stations) { 
    this.stations = stations; 
    inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

public int getCount() { 
    return stations.size(); 
} 

public Object getItem(int position) { 
    return position; 
} 

public long getItemId(int position) { 
    return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi = convertView; 
    if(convertView == null) 
     vi = inflater.inflate(R.layout.list_row, null); 

    TextView name = (TextView) vi.findViewById(R.id.station_name); 
    TextView ct = (TextView) vi.findViewById(R.id.station_ct); 
    TextView cl = (TextView) vi.findViewById(R.id.station_cl); 

    Station tmp = stations.get(position); 

    name.setText(tmp.get_name()); 
    ct.setText(tmp.get_ct()); 
    cl.setText(tmp.get_lc().toString()); 

    return vi; 
} 

}

活動的XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:ads="http://schemas.android.com/apk/res-auto" 
android:id="@+id/MainActivityLL" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context="me...MainActivity" > 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:divider="@color/list_divider" 
    android:dividerHeight="1dp" 
    android:layout_weight="1" 
    android:listSelector="@drawable/list_row_selector" /> 

<TextView 
    android:id="@android:id/empty" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:textAppearance="@android:style/TextAppearance.Medium" 
    android:text="@string/emptyList" 
    android:gravity="center" /> 

我已經籤自帶的反應,不是空的。我有我需要的所有數據的站點列表,但列表視圖總是顯示與ID TextView的空消息android.id/empty ..

+0

請問您可以發佈xml代碼嗎? – 2014-11-08 03:51:29

+0

done @HareshChhelana – yat0 2014-11-08 13:37:16

+1

您的應用程序是否執行'GetView'方法? – 2014-11-08 13:48:32

回答

1

刪除android:id="@android:id/list"
替換爲android:id="@+id/list"

<ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:divider="@color/list_divider" 
     android:dividerHeight="1dp" 
     android:layout_weight="1" 
     android:listSelector="@drawable/list_row_selector" /> 
0

嘗試使用ViewHolder設計模式,當你自定義適配器:

public class LazyAdapter extends BaseAdapter { 

    private List<Station> stations; 
    private Context context; 

    public LazyAdapter(Context context, List<Station> stations) { 
     this.stations = stations; 
     this.context=context; 
    } 

    public int getCount() { 
     return stations.size(); 
    } 

    public Object getItem(int position) { 
     return stations.get(position); 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null){ 
      holder = new ViewHolder(); 
      convertView = LayoutInflater.from(context).inflate(R.layout.list_row, null); 
      holder.name = (TextView) convertView.findViewById(R.id.station_name); 
      holder.ct = (TextView) convertView.findViewById(R.id.station_ct); 
      holder.cl = (TextView) convertView.findViewById(R.id.station_cl); 

      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.name.setText(stations.get(position).get_name()); 
     holder.ct.setText(stations.get(position).get_ct()); 
     holder.cl.setText(stations.get(position).get_lc().toString()); 

     return convertView; 
    } 

    class ViewHolder{ 
     TextView name; 
     TextView ct; 
     TextView cl; 
    } 
} 
+0

此解決方案不工作:( – yat0 2014-11-08 13:37:58

+0

問題解決:) – yat0 2014-11-08 14:51:35