2012-04-21 5 views
2

Я новичок в android. Я разрабатываю приложение, в котором есть список пользователей для студентов с кнопками редактирования и удаления. КакAndroid listview с несколькими элементами управления


STUDENT LIST 

[ABC]                             [править]                             [удалить]

[DEF]                             [править]                             [удалить]


С помощью этого кода им возможность перечислить детали студентов в <Textview>

public class DataBaseDemoActivity extends ListActivity { 
/** Called when the activity is first created. */ 
    SQLiteDatabase db; 
    Button btnInsert; 
    ArrayAdapter<String> students; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    try{ 
    db=openOrCreateDatabase("StudentDB",SQLiteDatabase.CREATE_IF_NECESSARY,null); 

    Cursor c=db.rawQuery("SELECT * FROM temp",null); 
    String[] students = new String[c.getCount()]; 

    if (c.moveToFirst()) 
    {      
     for (int i = 0; i < c.getCount(); i++) 
     { 
      students[i] = c.getString(0).toString()+" "+c.getString(1).toString(); 
      c.moveToNext(); 
     }   
    } 
    c.close(); 

    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, students)); 

    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 

    lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
     // When clicked, show a toast with the TextView text 
     Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
      Toast.LENGTH_SHORT).show(); 
    } 
    }); 


    }catch(SQLException e) 
    { 
    } 
} 

}

мне нужно хранить идентификатор записи с в так что, когда я нажимаю кнопку редактирования или удаления, мне нужно будет узнать идентификатор и внести изменения в БД. Как я могу задать значения для двух полей: <TextView> [показать детали] и <EditText> [видимость: нечистая - для сохранения идентификатора записи]. Я могу получить информацию до <TextView>, используя вышеуказанный код. Любое предложение будет оценено по достоинству.

UPDATE:

Layout я использую

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal"  
    > 
    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="invisible" 
     android:inputType="text" 
     android:onClick="showInfo" 
     /> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="230dip" 
     android:layout_height="wrap_content" 
     android:textSize="16sp" 
     android:id="@+id/studentInfo" > 
    </TextView> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/action" 
     android:onClick="showInfo" 
     /> 

</LinearLayout> 
+0

"Идентификатор записи" означает запись базы данных идентификатор с текстом? Я прав? – user370305

+0

@ user370305: Я имею в виду идентификатор записи базы данных. –

ответ

1

Вы можете получить Id в цикле выборки данных курсора, использовать для него любую коллекцию HashMap<id,String> и хранить идентификатор вместе с данными (текстом).

Согласно вашим требованиям, я предлагаю вам использовать SimpleCursorAdapter вместо ArrayAdapter с ListView.

Таким образом, вы можете легко управлять своими записями базы данных с помощью своего списка, а также получать всю информацию, связанную с базой данных для конкретной записи, когда элемент списка нажат.

Посмотрите на SimpleCursorAdapters and ListViews

Creating a custom CursorAdapter for Android

1

после этой линии ..

students[i] = c.getString(0).toString()+" "+c.getString(1).toString(); 
    student_ids[i]=Integer.parseInt(//get the id...) 
    //and you dont need to put it in invisible edittext... 

в OnClick метода вы получите целое "положение" .. и получить тх значение students_ids [] в этой позиции.

int id=students_ids[position]; 
+0

Как я получу целочисленную позицию, когда я нажму кнопку «Изменить»? .. Можете ли вы рассказать .. –

+0

Ваша кнопка не входит в строку списка? – 5hssba

+0

Да кнопка находится внутри строки. Я обновил вопрос .. добавил мой макет. пожалуйста, проверьте. –

Смежные вопросы