changing image on listview at runtime in android

爱⌒轻易说出口 提交于 2019-12-25 02:44:26

问题


I am using a LinearLayout to display some Text and image. I have the images at drawable/ and i am implimenting this with ListActivity with some onListItemClick functionality. now i wants to change the image for the rows which are processed by onclick functionality to show the status as processed. can some one help me in this issue to change the image at runtime.

the following is my implimentation.

public class ListWithImage extends ListActivity { /** Called when the activity is first created. */

private SimpleCursorAdapter myAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 // raj   setContentView(R.layout.main);

    Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
    startManagingCursor(cursor);

    String[] columns = new String[] {People.NAME, People.NUMBER};
    int[] names = new int[] {R.id.contact_name, R.id.contact_number};

    myAdapter = new SimpleCursorAdapter(this, R.layout.main, cursor, columns, names);
    setListAdapter(myAdapter);

}


@Override
protected void onListItemClick(ListView listView, View view, int position, long id) {
    super.onListItemClick(listView, view, position, id);

    Intent intent = new Intent(Intent.ACTION_CALL);
    Cursor cursor = (Cursor) myAdapter.getItem(position);
    long phoneId = cursor.getLong(cursor.getColumnIndex(People.PRIMARY_PHONE_ID));
    intent.setData(ContentUris.withAppendedId(Phones.CONTENT_URI, phoneId));

    startActivity(intent);
}

}

and main.xml is :

<LinearLayout
    android:layout_height="wrap_content" android:orientation="vertical" android:layout_width="250px">
 <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:orientation="horizontal">

   <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Name: " />

   <TextView android:id="@+id/contact_name"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
</LinearLayout> 
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:orientation="horizontal">          
   <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Phone: " />       
   <TextView android:id="@+id/contact_number"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
</LinearLayout>  


I thought to add the field to DB. but i was unable to know how to change the image with code. can any one provide me an example for drawing image with code and change it based on a condition at runtime.


回答1:


I've done the same thing in my application (however I didn't use a cursoradapter but a custom adapter, however the logic should be the same).

What I needed to get this working was to include a field in the db which specifies wheater or not the field is processed (or some field deciding which image to show). Then you need to bind your images address to that field. I don't know if you can do this with the simplecursoradapter, or if you need to implement your own though.

Then, when a user clicks an item you just set that item as processed in the db, and you tell your adapter that it has been updated.



来源:https://stackoverflow.com/questions/2964562/changing-image-on-listview-at-runtime-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!