当我们按下按钮时,如何保持列表视图保持突出显示?可能吗?我已经完成了这个link但没有回复。
我设法设置背景,图片和文字,以便在用户按下列表时进行更改。
我的一个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>
答案 0 :(得分:1)
您每次只能在OnItemSelectedListener中记录位置,并在用户导航回来后,调用mListView.setSelection(pos)
答案 1 :(得分:1)
你有listview的Activity把这个:
将其创建为全局变量:Bundle savedInstanceState;
@Override
protected void onRestart() {
// TODO Auto-generated method stub
onCreate(savedInstanceState);
super.onRestart();
}
onCreat
中的 e处理您的ListView
或您将adapter
设置为ListView
的位置。
以下是简单示例如何:
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);
};
}
或者你也可以做同样的风格REVERSE。意味着你必须在进入下一个活动后取消选择那个litview。您可以在列表项单击或您使用的任何内容中执行此操作..
答案 2 :(得分:0)
您可以在listView
上使用这些方法进行选择 mListView.setSelector(Color.BLUE);//or any other color or drawable
mListView.setSelection(position); //for selected position
这里你可以使用位置作为列表视图的选定位置。选择后你必须存储这个位置。所以当你按下后退按钮并再次返回到该活动时,所选位置将保持选中状态。