首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带BaseAdapter的空白BaseAdapter

带BaseAdapter的空白BaseAdapter
EN

Stack Overflow用户
提问于 2015-10-10 15:27:38
回答 1查看 170关注 0票数 0

我正在尝试使用BaseAdapter从数据库中填充我的列表。Logcat不显示任何错误。这是我的密码。

在这个DatabaseHelper课堂上,我有一个桌子学生

DatabaseHelper.java

代码语言:javascript
复制
public long saveData(Student std) {
    SQLiteDatabase db = getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put("NAME",std.name);
    cv.put("CITY",std.city);
    cv.put("AGE",std.age);
    long id = db.insert("STUDENTS", null, cv);
    db.close();
    return id;
}

public ArrayList<Student> getAllStudent() {
    ArrayList<Student> studentArrayList = new ArrayList<Student>();
    SQLiteDatabase db = getWritableDatabase();
    Cursor cursor = db.query("STUDENTS",null,null,null,null,null,null);
    Log.e("COUNT",""+cursor.getCount());

    while (cursor.moveToNext()) {
        Student s = new Student();
        s.name = cursor.getString(cursor.getColumnIndex("NAME"));
        s.city = cursor.getString(cursor.getColumnIndex("CITY"));
        s.age = cursor.getString(cursor.getColumnIndex("AGE"));
        studentArrayList.add(s);
    }
    db.close();
    return studentArrayList;
}

MyBaseAdapter.java

代码语言:javascript
复制
public class MyBaseAdapter extends BaseAdapter {

ArrayList<Student> myList = new ArrayList<Student>();
LayoutInflater inflater;
Context context;

public MyBaseAdapter(Context context,ArrayList<Student> myList) {
    this.myList = myList;
    this.context = context;
    inflater = LayoutInflater.from(this.context);
}

@Override
public int getCount() {
    return myList.size();
}

@Override
public Student getItem(int position) {
    return myList.get(position);
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    myViewHolder viewHolder;
    if(convertView == null){
        convertView = inflater.inflate(R.layout.single_row, null);
        viewHolder = new myViewHolder();
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (myViewHolder) convertView.getTag();
    }

    viewHolder.nameTextView = (TextView) convertView.findViewById(R.id.nameTextView);
    viewHolder.cityTextView = (TextView) convertView.findViewById(R.id.cityTextView);
    viewHolder.ageTextView = (TextView) convertView.findViewById(R.id.ageTextView);

    viewHolder.nameTextView.setText(myList.get(position).name);
    viewHolder.cityTextView.setText(myList.get(position).city);
    viewHolder.ageTextView.setText(myList.get(position).age);
    return convertView;
}

public class myViewHolder {
    TextView nameTextView, cityTextView, ageTextView;
}
}

这是我的模型课

Student.java

代码语言:javascript
复制
public class Student {
 String name;
 String city;
 String age;
}

在我的MainActivity中,我试图将数据填充到列表中。

MainActivity.java

代码语言:javascript
复制
public class MainActivity extends ActionBarActivity {

public EditText searchEditText;
public Button addButton;
public ListView studentListView;
public DatabaseHelper dbHelper;
public ArrayList<Student> arrayList;
public MyBaseAdapter myBaseAdapter;

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

    searchEditText = (EditText)findViewById(R.id.searchEditText);
    addButton = (Button)findViewById(R.id.addButton);
    studentListView = (ListView) findViewById(R.id.studentListView);

    addButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(MainActivity.this,AddNewStudent.class);
            startActivity(i);
        }
    });

    dbHelper = new DatabaseHelper(getApplicationContext());
    arrayList = dbHelper.getAllStudent();
    myBaseAdapter = new MyBaseAdapter(MainActivity.this,arrayList);
    studentListView.setAdapter(myBaseAdapter);
    myBaseAdapter.notifyDataSetChanged();
}
}

single_row.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
android:id="@+id/container">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Large Text"
    android:id="@+id/nameTextView" />

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Medium Text"
    android:id="@+id/cityTextView" />

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Medium Text"
    android:id="@+id/ageTextView" />
    </LinearLayout>

我不知道我哪里出了问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 19:30:01

最后,我找到了答案。您只需要在getView()方法中添加几行代码,就可以从list分配值到模型类对象。

代码语言:javascript
复制
public View getView(int position, View convertView, ViewGroup parent) {

    Student std = new Student(); //this line I added
    std = myList.get(position);  //this line I added
    myViewHolder viewHolder;
    if(convertView == null){
        convertView = inflater.inflate(R.layout.single_row, null);
        viewHolder = new myViewHolder();
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (myViewHolder) convertView.getTag();
    }

    viewHolder.nameTextView = (TextView) convertView.findViewById(R.id.nameTextView);
    viewHolder.cityTextView = (TextView) convertView.findViewById(R.id.cityTextView);
    viewHolder.ageTextView = (TextView) convertView.findViewById(R.id.ageTextView);

viewHolder.nameTextView.setText(myList.get(position).name);
viewHolder.cityTextView.setText(myList.get(position).city);
viewHolder.ageTextView.setText(myList.get(position).age);
return convertView;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33055618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档