2016-02-22 58 views
0

自定義ListView適配器不能正常工作 我設計了一個適配器來使用Jackson API從json文件創建的對象。當我傳遞對象到自定義適配器來提取信息並填充ListView但它不工作。自定義ListView不能在Android中工作

定製適配器ListView

package adapters; 

import java.util.ArrayList; 
import java.util.HashMap; 

import entity.VendorListObj; 

import plotkai.waterbottle.R; 
import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

public class CustomVendorRow extends BaseAdapter { 
    private Activity activity; 
    private VendorListObj[] obj; 
    private static LayoutInflater inflater = null; 

    public CustomVendorRow(Activity a, VendorListObj[] obj) { 
     activity = a; 
     this.obj = obj; 

    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     inflater = (LayoutInflater) activity 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View vi = convertView; 
     vi = inflater.inflate(R.layout.vendor_row, parent, false); 
     TextView vName = (TextView) vi.findViewById(R.id.vName); 
     TextView distance = (TextView) vi.findViewById(R.id.distance); 
     vName.setText(obj[position].getVendorname()); 
     distance.setText(obj[position].getLocality()); 

     return vi; 
    } 

} 

自定義行的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="wrap_content" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:src="@drawable/listbg" /> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/vName" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="Name" 
       android:textSize="15dip" 
       android:padding="5dp" /> 

      <TextView 
       android:id="@+id/distance" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="Name" 
       android:textSize="10dip" 
       android:paddingLeft="5dp"/> 
     </LinearLayout> 
    </LinearLayout> 

</RelativeLayout> 

和活動稱之爲如下:

package plotkai.waterbottle; 

import java.io.IOException; 

import org.codehaus.jackson.JsonParseException; 
import org.codehaus.jackson.map.JsonMappingException; 
import org.codehaus.jackson.map.ObjectMapper; 

import adapters.CustomVendorRow; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.widget.ListView; 
import android.widget.Toast; 
import entity.VendorListObj; 

public class VendorList extends Activity { 

    ListView list; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_vendor_list); 
     Intent i=getIntent(); 
     list=(ListView)findViewById(R.id.vendorList); 
     String vendorList=i.getExtras().getString("vendorList"); 
     ObjectMapper mapper =new ObjectMapper(); 
     VendorListObj[] obj = null; 
     try { 
     obj=mapper.readValue(vendorList, VendorListObj[].class); 
     } catch (JsonParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (JsonMappingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     CustomVendorRow vendorRow=new CustomVendorRow(this, obj); 
     list.setAdapter(vendorRow); 
     Toast.makeText(getApplicationContext(), "list not donee", 3000).show(); 
    } 

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

} 

和對象有信息所以沒有問題與JSON。 在此先感謝.. :)

+0

你正在收到什麼錯誤? –

+0

從getCount()重載的方法返回列表大小當前它是0所以android不生成任何列表 –

回答

0

您不返回數組的計數。

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return obj.length; 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return obj[position]; 
} 

以及爲什麼不使用arrraylist自定義對象。

相關問題