How to keep listview remain highlighted when we pressed back button? Is it possible? I've went through this link but no replies.
I managed to set background, image, and text in order to change when user press the list.
One of my xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@color/light_grey" />
<item android:state_selected="true"
android:drawable="@color/light_grey"/>
<item android:state_activated="true"
android:drawable="@color/light_grey"/>
<item android:state_focused="false"
android:drawable="@color/white" />
notification_row.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/activated_bg" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="5dp"
android:padding="4dp"
android:src="@drawable/checkbox" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.73"
android:orientation="vertical" >
<TextView
android:id="@+id/id_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/title_row"
android:layout_width="match_parent"
android:layout_height="25dp"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:padding="2dp"
android:text="Title"
android:textColor="#000000"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/content_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/sendtime_row"
android:layout_width="match_parent"
android:layout_height="25dp"
android:layout_marginLeft="5dp"
android:maxLength="100"
android:paddingBottom="2dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:text="Date"
android:textColor="#808080"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
in which Activity you have listview put this:
create this to global variable: Bundle savedInstanceState;
@Override
protected void onRestart() {
// TODO Auto-generated method stub
onCreate(savedInstanceState);
super.onRestart();
}
in onCreat
e handle your ListView
or from where you set you adapter
to ListView
.
Here is simple Example How do this:
package com.example.testapp;
import com.example.main.util.testActivity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class MainActivity extends ListActivity {
private static final String[] COUNTRIES = new String[] { "Belgium",
"France", "France_", "Italy", "Germany", "Spain" };
private MyArrayAdapter adapter;
Bundle savedInstanceState;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter = new MyArrayAdapter(MainActivity.this);
getListView().setAdapter(adapter);
}
private class MyArrayAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public MyArrayAdapter(Context con) {
// TODO Auto-generated constructor stub
mInflater = LayoutInflater.from(con);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return COUNTRIES.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ListContent holder;
View v = convertView;
if (v == null) {
v = mInflater.inflate(R.layout.my_spinner_style, null);
holder = new ListContent();
holder.name = (TextView) v.findViewById(R.id.textView1);
v.setTag(holder);
} else {
holder = (ListContent) v.getTag();
}
holder.name.setText("" + COUNTRIES[position]);
holder.name.setOnClickListener(mOnTitleClickListener3);
return v;
}
}
static class ListContent {
TextView name;
}
public OnClickListener mOnTitleClickListener3 = new OnClickListener() {
public void onClick(View v) {
final int position = getListView().getPositionForView(
(View) v.getParent());
v.setBackgroundColor(Color.RED);
startActivity(new Intent(MainActivity.this, testActivity.class));
// Log.d("you are click on Ratings", "you are click on Ratings");
// v.setBackgroundColor(Color.WHITE);
}
};
protected void onRestart() {
// adapter.notifyDataSetChanged();
onCreate(savedInstanceState);
};
}
or you can also do same style REVERSE. mean you have to deselect that litview after go to next activity. you can do this in list item click or whatever you have used..
You can just log the position every time in OnItemSelectedListener, and after user navigate back, call mListView.setSelection(pos)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With