Java 为listview的自定义适配器重写getview方法后,在listview中看不到任何内容
我是android编程新手。我正在编写一个android程序,它有两个选项卡:detailstab,用户在其中填写表单并点击save按钮。listtab,其中显示用户在EditText控件的“详细信息”选项卡中插入的内容。为了实现这一点,我创建了以下类: 详细java类:Java 为listview的自定义适配器重写getview方法后,在listview中看不到任何内容,java,android,listview,android-listview,custom-adapter,Java,Android,Listview,Android Listview,Custom Adapter,我是android编程新手。我正在编写一个android程序,它有两个选项卡:detailstab,用户在其中填写表单并点击save按钮。listtab,其中显示用户在EditText控件的“详细信息”选项卡中插入的内容。为了实现这一点,我创建了以下类: 详细java类: public class detail { public String name; public String adr; public String note; public int radioValu
public class detail {
public String name;
public String adr;
public String note;
public int radioValue;
}
details活动类,我在其中创建arraylist并从detail添加对象:
public class details extends Activity {
public ArrayList<detail> detaillist=new ArrayList<detail>();
public EditText etName;
public EditText etAdr;
public EditText etNote;
public RadioGroup rg;
public RadioButton rb_0;
public RadioButton rb_1;
public RadioButton rb_2;
static details detailsActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
detailsActivity=this;
setContentView(R.layout.details_tab);
Button btnSave=(Button) findViewById(R.id.button1);
//define an arraylist to add detail object to it
etName=(EditText) findViewById(R.id.editText1);
etAdr=(EditText) findViewById(R.id.editText2);
etNote=(EditText) findViewById(R.id.editText3);
rg=(RadioGroup) findViewById(R.id.radioGroup1);
rb_0=(RadioButton) findViewById(R.id.radio0);
rb_1=(RadioButton) findViewById(R.id.radio1);
rb_2=(RadioButton) findViewById(R.id.radio2);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
final detail d=new detail();
makeDetailList(d);
}
});
}
public void clear(EditText et) {
et.setText("");
}
public ArrayList<detail> makeDetailList(detail d){
d.name=etName.getText().toString();
d.adr=etAdr.getText().toString();
if(rb_0.isSelected())
{
d.radioValue=0;
}
else if (rb_1.isSelected())
{
d.radioValue=1;
}
else if (rb_1.isSelected())
{
d.radioValue=2;
}
detaillist.add(d);
return detaillist;
}
public static details getInstance(){
return detailsActivity;
}
公共类详细信息扩展活动{
public ArrayList detaillist=new ArrayList();
公共编辑文本名称;
公共编辑文本etAdr;
公共编辑文本注释;
公共放射组rg;
公共单选按钮rb_0;
公共无线按钮rb_1;
公共无线电按钮rb_2;
静态细节活动;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
detailsActivity=this;
setContentView(R.layout.details_选项卡);
按钮btnSave=(按钮)findViewById(R.id.button1);
//定义arraylist以向其添加细节对象
etName=(EditText)findViewById(R.id.editText1);
etAdr=(EditText)findViewById(R.id.editText2);
etNote=(EditText)findViewById(R.id.editText3);
rg=(放射组)findViewById(R.id.RadioGroup 1);
rb_0=(RadioButton)findViewById(R.id.radio0);
rb_1=(RadioButton)findViewById(R.id.radio1);
rb_2=(RadioButton)findViewById(R.id.radio2);
btnSave.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图arg0){
最终详图d=新详图();
makeDetailList(d);
}
});
}
公共空白清除(编辑文本et){
et.setText(“”);
}
公共ArrayList makeDetailList(详图d){
d、 name=etName.getText().toString();
d、 adr=etAdr.getText().toString();
if(rb_0.isSelected())
{
d、 放射性值=0;
}
else if(rb_1.isSelected())
{
d、 放射性值=1;
}
else if(rb_1.isSelected())
{
d、 放射性值=2;
}
详细清单。添加(d);
返回详细列表;
}
公共静态详细信息getInstance(){
返回细节活动;
}
最后列出活动类该类包含用于显示“详细信息”选项卡中的数据的listview:
public class list extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_tab);
ListView lv=(ListView) findViewById(R.id.listView1);
MyAdapter adapter=new MyAdapter(this,android.R.layout.simple_list_item_1 ,
R.id.textView1,
details.getInstance().detaillist);
lv.setAdapter(adapter);
(this,R.layout.my_list,R.id.textView1,R.id.textView2,));
}
private class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int resource, int textViewResourceId,
ArrayList<detail> detaillist) {
super(context, resource, textViewResourceId);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row=inflater.inflate(R.layout.my_list, parent,false);
ArrayList<detail> items=details.getInstance().detaillist;
ImageView ivR=(ImageView) row.findViewById(R.id.imageView1);
TextView tvN=(TextView) row.findViewById(R.id.textView1);
TextView tvA=(TextView) row.findViewById(R.id.textView2);
tvN.setText(items.get(position).name);
tvA.setText(items.get(position).adr);
if(items.get(position) != null)
{
if(items.get(position).radioValue==0)
{
ivR.setImageResource(R.drawable.t);
}
else if(items.get(position).radioValue==1)
{
ivR.setImageResource(R.drawable.t);
}
else if(items.get(position).radioValue==2)
{
ivR.setImageResource(R.drawable.t);
}
}
return row;
}
}
}
公共类列表扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.list_选项卡);
ListView lv=(ListView)findViewById(R.id.listView1);
MyAdapter=新的MyAdapter(这是android.R.layout.simple\u list\u item\u 1,
R.id.textView1,
details.getInstance().detaillist);
低压设置适配器(适配器);
(这个,R.layout.my_列表,R.id.textView1,R.id.textView2,);
}
私有类MyAdapter扩展了ArrayAdapter{
公共MyAdapter(上下文上下文、int资源、int textViewResourceId、,
ArrayList详细信息列表){
超级(上下文、资源、textViewResourceId);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务);
查看行=充气机。充气(R.layout.my_列表,父项,false);
ArrayList items=details.getInstance().detaillist;
ImageView ivR=(ImageView)row.findViewById(R.id.imageView1);
TextView tvN=(TextView)row.findViewById(R.id.textView1);
TextView tvA=(TextView)row.findViewById(R.id.textView2);
tvN.setText(items.get(position.name));
tvA.setText(items.get(position.adr));
if(items.get(position)!=null)
{
if(items.get(position.radioValue==0)
{
ivR.setImageResource(R.drawable.t);
}
else if(items.get(position.radioValue==1)
{
ivR.setImageResource(R.drawable.t);
}
else if(items.get(position.radioValue==2)
{
ivR.setImageResource(R.drawable.t);
}
}
返回行;
}
}
}
这是my_list.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="match_parent" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="29dp"
android:layout_marginTop="24dp"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:text="TextView"
android:textColor="#687EFC"
android:textSize="20sp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/imageView1"
android:layout_marginLeft="31dp"
android:layout_toRightOf="@+id/imageView1"
android:text="TextView"
android:textColor="#18277D"
android:textSize="30sp" />
</RelativeLayout>
我真的很感谢你的帮助
关于更改您的
private class MyAdapter extends ArrayAdapter<String>
进入
此外,您还应该阅读有关适配器的更多信息
private class MyAdapter extends ArrayAdapter<detail>
super(context, resource, textViewResourceId);
super(context, resource, textViewResourceId, detaillist);