2014-04-10 43 views
1

我想用三个变量填充arraylist。之后,数组列表应该在列表视图中显示其内容。当我运行这个类时,logcat显示了一个完全未知的错误。以下是我正在使用的课程。导致应用崩溃的未知错误

import java.util.ArrayList; 
import android.app.Activity; 
import android.app.ActionBar.LayoutParams; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class Secondscreen extends Activity { 

String pName ; 
int pPrice; 
String pDisc; 
int total; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.secondscreen); 
    ListView lv= (ListView) findViewById(R.id.listView1); 

    //TextView showCartContent = (TextView) findViewById(R.id.showCart); 
    final Button thirdBtn = (Button) findViewById(R.id.third); 
    //final LinearLayout lb = (LinearLayout) findViewById(R.id.secondLinear); 

    final Controller aController = (Controller) getApplicationContext(); 

      final int cartSize = aController.getCart().getCartSize(); 

      final ArrayList<Listitem> arrayList=new ArrayList<Listitem>(); 


      BaseAdapter adapter= new BaseAdapter(){ 

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

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

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

       LayoutInflater inflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       @Override 
       public View getView(int position, View view, ViewGroup viewgroup) { 
        if (view == null) { 
         view=inflater.inflate(R.layout.pattern, null); 
        } 
        TextView tv=(TextView) view.findViewById(R.id.nameview); 
        TextView tv2=(TextView) view.findViewById(R.id.pdesc); 
        TextView tv3=(TextView) view.findViewById(R.id.priceView); 
        tv.setText(pName); 
        tv2.setText(pPrice); 
        tv3.setText(pDisc); 
        return view; 
       }  

      }; 
      lv.setAdapter(adapter); 


      if(cartSize >0) 
       { 

        for(int i=0;i<cartSize;i++) 
        { 

         pName = aController.getCart().getProducts(i).getProductName(); 
         pPrice  = aController.getCart().getProducts(i).getProductPrice(); 
         pDisc  = aController.getCart().getProducts(i).getProductDesc(); 

         Listitem item=new Listitem(pName, pPrice,pDisc); 
         arrayList.add(item); 
         adapter.notifyDataSetChanged(); 

        } 

       } 

} 
@Override 
protected void onDestroy() { 

    super.onDestroy(); 


} 
} 

请帮我解决这个问题。

+4

请复制粘贴您的日志中的问题,不能够阅读它在图像 – Saqib

+0

的错误是无法读取!请发布logCat中的“CausedBy”行。也可以尝试设置适配器(lv.setAdapter(adapter))在这个if块之后:if(cartSize> 0) –

+0

请清楚地显示你的Logcat,但是你在设置错误的适配器后检索数组值是否相反。 –

回答

1
tv2.setText(pPrice); 

pPrice是一个int。 setText(int)在R类内查找String id,如果查找失败,则抛出ResourceNotFoundException。速战速决是

tv2.setText(""+pPrice); 

这样,你所提供的是String对象setText

编辑:

这种方式改变你的getView:

@Override 
    public View getView(int position, View view, ViewGroup viewgroup) { 
     if (view == null) { 
        view=inflater.inflate(R.layout.pattern, null); 
      } 
      Listitem item = (Listitem)getItem(position) 
      TextView tv=(TextView) view.findViewById(R.id.nameview); 
      TextView tv2=(TextView) view.findViewById(R.id.pdesc); 
      TextView tv3=(TextView) view.findViewById(R.id.priceView); 
      tv.setText(item. pName); 
      tv2.setText(""+item.pPrice); 
      tv3.setText(item.pDisc); 
      return view; 
    }  
+0

谢谢黑带。您之前的解决方案奏效现在我遇到了另一个代码问题,请帮助我解决这个问题。请阅读上面的帖子。 – user3393926

+0

我应该阅读哪一个? – Blackbelt

+0

我在本页顶部的主要帖子。 – user3393926

0

你永远不会从得到你的对象ArrayList。此代码添加到您的getView()方法:

ListItem item = arrayList.get(position); 
tv.setText(item.pName); 
tv2.setText(item.pPrice); 
tv3.setText(item.pDisc); 
相关问题