2014-07-19 56 views
0

我的Java代码:如何创建一个ListView

public class MainActivity extends Activity { 

    String[] name; 
    String[] family; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     name=new String[]{"aaa","bbb","ccc","ddd","fff"}; 
     family=new String[]{"Ahamadi","Ahamadi","Ahamadi","Ahamadi","Ahamadi"}; 

     ListView list=(ListView) findViewById(R.id.list_View); 

     MyAdapter adapter=new MyAdapter(getApplicationContext()); 

     list.setAdapter(adapter); 
    }//end method OnCreate 

    private class MyAdapter extends BaseAdapter 

    { 
     LayoutInflater MyInflater; 
     public MyAdapter(Context context) 
     { 
      MyInflater=LayoutInflater.from(context); 
     } 




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

     @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; 
     } 

     @SuppressLint("InflateParams") 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      ViewHolder X=new ViewHolder(); 

      if(convertView==null) 
      { 
       convertView=MyInflater.inflate(R.layout.list_item,null); 

       X.Name=(TextView) convertView.findViewById(R.id.Text_name); 
       X.Family=(TextView) convertView.findViewById(R.id.Text_family); 

       convertView.setTag(X); 
      } 

      else{ 

       X=(ViewHolder)convertView.getTag(); 
      } 


      X.Name.setText(name[position]); 
      X.Family.setText(family[position]); 


      // TODO Auto-generated method stub 
      return convertView; 
     } 


     //-class Holder 
     public class ViewHolder 
     { 

      TextView Name; 
      TextView Family; 
     } 
    } 
} 

,并创建XML格式的ListView控件。程序运行时,它显示按摩:“Applecation已停止”。

+2

看看有什么消息你logcat的,并张贴在你的问题 – joao2fast4u

+0

发布你的日志和/或activity_main.xml中的文件。 – Simas

+0

http://stackoverflow.com/questions/16333754/how-to-customize-listview-using-baseadapter 引用此 – sunil

回答

0

我看到你的代码是正确的,但可能你没有必要元素布局内的文件:

例如您的ListView:

ListView list=(ListView) findViewById(R.id.list_View); 

必须activity_main.xml(例如)内:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/container" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ListView 
    android:id="@+id/list_View" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

</RelativeLayout> 

和你list_item.xml必须包含TextView's Text_nameText_family(例如):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

     <TextView 
      android:id="@+id/Text_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingBottom="5dp" 
      android:paddingTop="10dp"/> 
     <TextView 
      android:id="@+id/Text_family" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingBottom="5dp" 
      android:paddingTop="10dp"/> 

</LinearLayout> 

尝试使用我的.xml文件,并请尝试后在logcat的每次你问这里stackoveflow.com问题显示的消息=)

0

改变这一点:

public MyAdapter(Context context){ 
    MyInflater=LayoutInflater.from(context); 
} 

作者:

public MyAdapter(Context context) { 
    MyInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

在您的ActivityonCreate()出现

MyAdapter adapter = new MyAdapter(getBaseContext()); 
list.setAdapter(adapter); 
相关问题