почему в виде списка отображаются перезаписанные элементы; думаю проблема в файле макета XML - PullRequest
0 голосов
/ 08 ноября 2018

Я создаю список, управляемый адаптером курсора.Я написал код ниже.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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...