Android: обновление макетов строк на основе пользовательского ввода с помощью CursorAdapterAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android: обновление макетов строк на основе пользовательского ввода с помощью CursorAdapter

Сообщение Anonymous »

В настоящее время я работаю над приложением, которое отображает данные из базы данных SQLiteDatabase в виде списка. В этом списке используются пользовательские макеты. Мое намерение состояло в том, чтобы иметь три разных макета, в зависимости от того, что делает пользователь. Первый макет отображает только один TextView и кнопку (называемую row_nameonly). Если пользователь нажмет эту кнопку, макет переключится на более подробное представление (называемое row_viewentry). Наконец, если пользователь снова нажимает кнопку, первый макет отображается еще раз (row_nameonly). Я пытался это сделать, но рабочего решения не нашел. Моя текущая версия, кажется, меняет вид строки, но новый макет не виден. Я хочу сделать это без добавления дополнительных данных в базу данных.
Это код пользовательского адаптера курсора:

Код: Выделить всё

public class EntryListCursorAdapter extends CursorAdapter{

public int viewRequestPosition = -100;

public EntryListCursorAdapter(Context context, Cursor c) {
super(context, c, 0);
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.row_nameonly, parent, false);
}

@Override
public void bindView(View view, final Context context, final Cursor cursor) {

ViewGroup parent = (ViewGroup) view.getParent();

if(cursor.getPosition() == viewRequestPosition){
view = LayoutInflater.from(context).inflate(R.layout.row_viewentry, parent, false);
}

if(!(cursor.getPosition() == viewRequestPosition)) {
TextView nameView = (TextView) view.findViewById(R.id.txt_name);
ImageButton expandMoreButton = (ImageButton) view.findViewById(R.id.btn_expandmore);

String name = cursor.getString(cursor.getColumnIndexOrThrow("prename")) + " " +
cursor.getString(cursor.getColumnIndexOrThrow("surname"));

nameView.setText(name);

expandMoreButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
viewRequestPosition = cursor.getPosition();
notifyDataSetChanged();
}
});
}
}
TLDR: есть ли способ заставить CursorAdapter изменить макет представления, в котором была нажата кнопка, и отобразить новый макет без добавления дополнительных данных в базу данных SQLiteDatabase?< /p>
Спасибо
(Если вам нужна дополнительная информация, спрашивайте)

Подробнее здесь: https://stackoverflow.com/questions/416 ... soradapter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»