Я создаю список, управляемый адаптером курсора.Я написал код ниже.RoomShare - это деятельность, которая содержит список.MessDatabase - это класс, который происходит от SQLiteOpenHelper.TempDataFromDB - это временный класс, который содержит запись, полученную из DB.DB2CursorAdapter, является адаптером курсора.В деятельности RoomShare я создаю объект MessDatabase (производный от SQLiteOpenHelper).В конструкторе MessDatabase я создаю таблицу «Share_room» и добавляю в нее строку. Затем на курсоре выполняется запрос Select *. Затем создается объект DB2CursorAdapter.В новом представлении DB2CursorAdapter я заполняю 2 текстовых представления.Когда я заполняю 2 textViews, элемент списка появляется перезаписанным.Но когда я использую 1 textview, в db_cursor_roomShare.xml, все в порядке.Я думаю, что некоторые проблемы с файлом XML.
public class RoomShare extends AppCompatActivity {
DB2CursorAdapter DBAdapter;
MessDatabase mdb;
Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_room_share);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
String selectQuery = "SELECT * FROM " + TempDataFromDB.TABLE_NAME /*+ " ORDER BY " +
TempDataFromDB.COLUMN_MESS_NAME + " DESC"*/;
//this.deleteDatabase("ShareRoom_db");
mdb = new MessDatabase(this);
SQLiteDatabase db = mdb.getWritableDatabase();//getReadableDatabase();
cursor = db.rawQuery(selectQuery,null);
DBAdapter = new DB2CursorAdapter(this, cursor);
final ListView listview = (ListView) findViewById(R.id.listview);
listview.setAdapter(DBAdapter);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*Snackbar.make(view, "text u", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();*/
}
});
db.close();
}
public class MessDatabase extends SQLiteOpenHelper {
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "ShareRoom_db";
public MessDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TempDataFromDB.CREATE_TABLE);
//insertMessName("Demo");
db.execSQL("INSERT INTO " + TempDataFromDB.TABLE_NAME +
"(" + TempDataFromDB.COLUMN_MESS_NAME +
")" + "VALUES " + "('One')");
}
public class DB2CursorAdapter extends CursorAdapter {
private LayoutInflater cursorInflater;
public DB2CursorAdapter(Context context, Cursor cursor) {
super(context,cursor);
System.out.println("Sandeep1");
/*cursorInflater = (LayoutInflater) context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);*/
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
// R.layout.list_row is your xml layout for each row
System.out.println("Sandeep2");
cursorInflater = LayoutInflater.from(parent.getContext());
return cursorInflater.inflate(R.layout.db_cursor_room_share, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
System.out.println("Sandeep3");
TextView tvBody = (TextView) view.findViewById(R.id.tvBody);
TextView tvPriority = (TextView) view.findViewById(R.id.tvPriority);
// Extract properties from cursor
String id = cursor.getString(cursor.getInt(cursor.getColumnIndex(TempDataFromDB.COLUMN_ID)));
String mess_name = cursor.getString(cursor.getColumnIndex(TempDataFromDB.COLUMN_MESS_NAME));
Toast toast=Toast.makeText(context,mess_name,Toast.LENGTH_SHORT);
toast.show();//----This is printing perfectly one
// Populate fields with extracted properties
tvBody.setText(id);
tvPriority.setText(mess_name);
System.out.println("Sandeep4");
}
public class TempDataFromDB {
public static final String TABLE_NAME = "Share_room";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_PARTICIPANTS = "Participants";
public static final String COLUMN_MESS_NAME = "Mess_Name";
private int id;
private String Participants;
String[] arrayParticipants;
private String Mess_Name;
// Create table SQL query
public static final String CREATE_TABLE =
"CREATE TABLE IF NOT EXISTS " + TABLE_NAME + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_PARTICIPANTS+ " TEXT,"
+ COLUMN_MESS_NAME+"TEXT"
+ ")";
public TempDataFromDB() {
}
public TempDataFromDB(int id, String Participants,String Mess) {
this.id = id;
this.Participants = Participants;
this.Mess_Name = Mess;
}
db_cursor_roomShare.xml
<?xml version="1.0" encoding="utf8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match parent"
<TextView
android:id="@+id/tvBody"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Study cursors"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/tvBody"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="mess name"
android:textAppearance="?android:attr/textAppearanceMedium"/>
<android.support.constraint.ConstraintLayout>
activity_room_share.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/res-auto"
xmlns:tools="http://schemas.android.tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RoomShare"
<ListView android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weight="1"/>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>