2013-07-22 53 views
0

我在啓動我的充氣機時填充自定義列表時出現錯誤。 logcat的錯誤:Android自定義列表inflateException錯誤

android.view.InflateException: Binary XML file line #20: Error inflating class

我成功地填充一個hashmap<string, string>。然後我把它添加到一個arrayList<HashMap<string, string>. ..所有這些在後臺線程。

然後我得到我的清單'list=(ListView)findViewById(R.id.list);'和setAdapter它。

更新我的問題 - 如果我從contact_list_row.xml中刪除圖像視圖,它的工作原理!這是破壞我的頭!

錯誤是當我運行下面的行

vi = inflater.inflate(R.layout.contact_list_row, null); 

有趣的是,一旦我得到了「應用程序已停止」錯誤,並背出活動,再按一下自定義列表視圖填充。

class refreshThread extends AsyncTask<String, String, String> 
    { 
     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 
     @Override 
     protected void onPreExecute() 
     { 
      super.onPreExecute(); 
      rDialog = new ProgressDialog(Cool_Activity.this); 
      rDialog.setMessage("Analysing your buddys. Please wait..."); 
      rDialog.setIndeterminate(false); 
      rDialog.setCancelable(false); 
      rDialog.show(); 
     } 

     @SuppressWarnings("unchecked") 
     @Override 
     protected String doInBackground(String... args) 
     {   
      //What to output in each listitem in UI 
       HashMap<String, String> map = new HashMap<String, String>(); 
       map.put("id", "1"); 
       map.put("contact", contact); 
       map.put("Sent", "Sent: "+"0.1"); 
       map.put("Received", "Received: "+String.format("%.1f", score)); 
       map.put("duration", type); 
       map.put("thumb_url", "http://upload.wikimedia.org/wikipedia/commons/d/d3/Albert_Einstein_Head.jpg"); 
       map.put("sent_value", "0.01"); 
       map.put("rec_value", score.toString()); 

       // adding HashList to ArrayList 
       resultsList.add(map); 

      //} 
      return null; 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String file_url) 
     { 
      // dismiss the dialog after getting all questions 
      rDialog.dismiss(); 
      // updating UI from Background Thread 
      runOnUiThread(new Runnable() 
      { 
       public void run() 
       { 
        /** 
        * Updating stats ui 
        * */    
        list=(ListView)findViewById(R.id.list); 

        // Getting adapter by passing xml data ArrayList 
        adapter=new Contacts_LazyAdapter(Cool_Activity.this, resultsList); 
        list.setAdapter(adapter); 

        // Click event for single list row 
        /* list.setOnItemClickListener(new OnItemClickListener() { 

         @Override 
         public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 

         } 
        });*/ 

       } 
      }); 
     } 

    } 

我的適配器邏輯....

public class Contacts_LazyAdapter extends BaseAdapter { 

private Activity activity; 
private ArrayList <HashMap<String, String>> data; 
private static LayoutInflater inflater=null; 

public Contacts_LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) { 
    activity = a; 
    data=d; 
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

public int getCount() { 
    return data.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.contact_list_row, null); 

    TextView contact= (TextView)vi.findViewById(R.id.textView_name); // contact 
    TextView sent = (TextView)vi.findViewById(R.id.TextView_SentResult); // sent result 
    TextView received = (TextView)vi.findViewById(R.id.TextView_ReceivedResult); // received result 
    TextView duration = (TextView)vi.findViewById(R.id.duration); // possible future change ... 
    ImageView sent_image=(ImageView)vi.findViewById(R.id.image_app); //get sent personalitymage 
    ImageView rec_image=(ImageView)vi.findViewById(R.id.rec_image); // get received personality image 
    HelpfulMethods helpful = new HelpfulMethods(); 

    HashMap<String, String> contact_info = new HashMap<String, String>(); 
    contact_info = data.get(position); 

    // Setting all values in listview 
    contact.setText(contact_info.get(Contacts_CompositeListViewActivity.KEY_CONTACT)); 
    sent.setText(contact_info.get(Contacts_CompositeListViewActivity.KEY_SENT)); 
    received.setText(contact_info.get(Contacts_CompositeListViewActivity.KEY_RECEIVED)); 
    duration.setText(contact_info.get(Contacts_CompositeListViewActivity.KEY_DURATION)); 
    helpful.getDrawableFile((float) Double.parseDouble(contact_info.get(Contacts_CompositeListViewActivity.KEY_SENT_VALUE)), sent_image); 
    helpful.getDrawableFile((float) Double.parseDouble(contact_info.get(Contacts_CompositeListViewActivity.KEY_REC_VALUE)), rec_image); 
    return vi; 
    } 
} 

Contact_List_Row

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/list_selector" 
    android:orientation="horizontal" 
    android:padding="5dip" > 

    <!-- ListRow Left sied Thumbnail image --> 

    <LinearLayout 
     android:id="@+id/thumbnail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginRight="5dip" 
     android:background="@drawable/image_bg" 
     android:padding="3dip" > 

     <ImageView 
      android:id="@+id/image_app" 
      android:layout_width="50dip" 
      android:layout_height="50dip" 
      android:src="@drawable/red" /> 
    </LinearLayout> 



    <!-- Title Of Song --> 

    <TextView 
     android:id="@+id/textView_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@id/thumbnail" 
     android:layout_toRightOf="@id/thumbnail" 
     android:text="Niamh" 
     android:textColor="#040404" 
     android:textSize="15dip" 
     android:textStyle="bold" 
     android:typeface="sans" /> 

    <!-- Artist Name --> 

    <TextView 
     android:id="@+id/TextView_SentResult" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/textView_name" 
     android:layout_marginTop="1dip" 
     android:layout_toRightOf="@id/thumbnail" 
     android:text="Sent: 17.5" 
     android:textColor="#343434" 
     android:textSize="18dip" /> 

    <!-- Rightend Duration --> 

    <TextView 
     android:id="@+id/duration" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@id/textView_name" 
     android:layout_marginRight="5dip" 
     android:gravity="right" 
     android:text="5:45" 
     android:textColor="#10bcc9" 
     android:textSize="10dip" 
     android:textStyle="bold" 
     android:visibility="invisible" /> 

    <!-- Rightend Arrow --> 

    <ImageView 
     android:id="@+id/imageView_icon" 
     android:layout_width="20dp" 
     android:layout_height="20dp" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:src="@drawable/arrow_blue" 
     android:visibility="invisible" /> 

    <LinearLayout 
     android:id="@+id/thumbnail2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@id/duration" 
     android:layout_toLeftOf="@id/duration" 
     android:background="@drawable/image_bg" 
     android:padding="3dip" > 

     <ImageView 
      android:id="@+id/rec_image" 
      android:layout_width="50dip" 
      android:layout_height="50dip" 
      android:layout_centerVertical="true" 
      android:src="@drawable/red" /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/TextView_ReceivedResult" 
     android:layout_width="120dp" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@id/TextView_SentResult" 
     android:layout_alignBottom="@id/TextView_SentResult" 
     android:layout_marginLeft="22dp" 
     android:layout_toRightOf="@id/textView_name" 
     android:text="Received: 16.5" 
     android:textColor="#343434" 
     android:textSize="18dip" /> 

</RelativeLayout> 
+0

後從R.layout.contact_list_row – SemaphoreMetaphor

+0

該代碼添加它,延遲道歉... – Fearghal

+0

不相關的問題,BT一個簡單的音符,onPostExecute已經在UI線程你不需要runOnUIxx方法 – Atrix1987

回答

0

你一定分配IDS多次。例如:

... 
android:layout_toLeftOf="@+id/duration" 
... 
android:id="@+id/duration" 
... 

+符號僅在首次使用id時才需要使用。之後,只需用它作爲:

"@id/duration" 
+0

不存在完全相同的錯誤 - 從layout_xxxxx定位屬性中刪除所有'+'。在問題中編輯了xml。 – Fearghal

+0

更新我的問題 - 如果我從list_row.xml中刪除imageIvews它的作品! – Fearghal

相關問題