【发布时间】:2019-07-25 13:43:59
【问题描述】:
我有警告导致我的应用程序崩溃。
这是警告 ::
((((来自视图适配器的无条件布局膨胀:应该使用视图持有者模式(使用传递给此方法的回收视图作为第二个参数)以获得更平滑的滚动))))
这是我的代码::
public class ContactsAdapter extends ArrayAdapter<Contacts> {
Context mCtx;
int layoutRes ;
List<Contacts> contactsList;
public ContactsAdapter(Context mCtx, int layoutRes, List<Contacts>
contactsList)
{
super(mCtx, layoutRes, contactsList);
this.mCtx = mCtx ;
this.layoutRes = layoutRes ;
this.contactsList = contactsList ;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView,
@NonNull
ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(layoutRes, null);
TextView textView = view.findViewById(R.id.textViewContactMessage);
Contacts contacts = contactsList.get(position);
textView.setText(contacts.getPhone());
textView.setText(contacts.getContext());
return view;
}
}
警告在行::: 查看视图 = inflater.inflate(layoutRes, null);
这是我的 MessageActivity 代码::
public class MessageActivity extends AppCompatActivity {
List<Contacts> contactsList;
ListView listView;
SQLiteDatabase mDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_message);
mDatabase = openOrCreateDatabase(MainActivity.DATABASE_NAME, MODE_PRIVATE, null);
contactsList = new ArrayList<>();
listView = (ListView) findViewById(R.id.listViewContactMessage);
loadContact_dbFromDatabase();
}
private void loadContact_dbFromDatabase(){
String sql = " SELECT * FROM contact_message";
Cursor cursor = mDatabase.rawQuery(sql, null);
if (cursor.moveToFirst()){
do {
contactsList.add(new Contacts (
cursor.getInt(0),
cursor.getString(1),
cursor.getString(2)
));
}while (cursor.moveToNext());
ContactsAdapter adapter = new ContactsAdapter(this, R.id.textViewContactMessage, contactsList);
listView.setAdapter(adapter);
}
}
}
我知道其他人说这个问题,但我不知道如何更改我的代码!!!
谁能告诉我该怎么办??!!
【问题讨论】:
-
你如何使用这个适配器?你能展示你的代码吗?
-
@anil 是的,我编辑我的代码
-
@anil 你又看到代码了吗???
-
您需要实现 ViewHolder 模式,如下面的回答。但我建议你使用 CursorAdapter 或(如果你想使用自己的适配器)RecyclerView 而不是 ListView
-
@anil 我想用 RecyclerView 但我不知道怎么用!!!