Я столкнулся с странным поведением в моем андроиде ListView: я отключил флажки в каждой строке. Когда я нажимаю на строку, кажется, что флажки возвращаются для включения в течение короткого времени перед запуском следующего действия (результат щелчка).Android ListView щелкнуть все флажки с включенными
Вот предыдущий щелчок и после щелчка:
stationsfavoritesadapter.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:descendantFocusability="blocksDescendants">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="@drawable/listviewborder">
<CheckBox
android:id="@+id/favorite_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/starStyle"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:enabled="false"
/>
<ImageView
android:id="@+id/weatherimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/favorite_checkbox"
/>
<TextView
android:id="@+id/StationNameText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/weatherimage"
android:layout_alignTop="@id/weatherimage"
android:textStyle="bold"
/>
<TextView
android:id="@+id/temperatureText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/weatherimage"
android:layout_below="@id/StationNameText"
/>
<TextView
android:id="@+id/trailsText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/StationNameText"
android:layout_alignParentRight="true"
android:layout_marginRight="5dp"
/>
</RelativeLayout>
</RelativeLayout>
Вот класс адаптера с помощью метода getView()
:
public class StationsFavoritesAdapter extends StationsAdapter{
public StationsFavoritesAdapter(StationsManager stations)
{
_stationManager = stations;
_data = new ArrayList<Map.Entry<String, Station>>();
_data.addAll(_stationManager.GetFavorites().entrySet());
_stationFilterList = _data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
final View result;
if (convertView == null)
{
result = LayoutInflater.from(parent.getContext()).inflate(R.layout.stationsfavoritesadapter, parent, false);
}
else
{
result = convertView;
}
final Map.Entry<String, Station> station = getItem(position);
((TextView) result.findViewById(R.id.temperatureText)).setText(station.getValue().get_temperature() + "°C");
((TextView) result.findViewById(R.id.StationNameText)).setText(station.getKey());
((TextView) result.findViewById(R.id.trailsText)).setText(station.getValue().get_trails().first + "/" + station.getValue().get_trails().second);
CheckBox favoriteBox = (CheckBox)result.findViewById(R.id.favorite_checkbox);
favoriteBox.setChecked(true);
ImageView image = (ImageView)result.findViewById(R.id.weatherimage);
if(station.getValue().get_weather().equals("sunny"))
{
image.setImageResource(R.mipmap.sunnyicon);
}
else if(station.getValue().get_weather().equals("storm-clouds"))
{
image.setImageResource(R.mipmap.snowicon);
}
else
{
image.setImageResource(R.mipmap.cloudyicon);
}
return result;
}
}
И событие списка ListView:
@Override
public void onListItemClick(ListView parent, View w, int position, long id)
{
String stationName = adapter.getItem(position).getKey();
Intent intent = new Intent(this, StationActivity.class);
Bundle b = new Bundle();
b.putString("Station name", stationName);
intent.putExtras(b);
startActivity(intent);
}
Спасибо за ваше время.
Я не понимаю, что делает ваша программа и чего вы хотите достичь. Вы можете объяснить мне свою идею, пожалуйста? –
У меня есть список в действии, каждая строка содержит отключенный флажок. Когда я нажимаю на одну строку, кажется, что флажки активируются на короткое время (их изменение цвета). Почему они включены, когда я просто нажимаю в строке списка списка. – user1594047
Можете ли вы дать мне очень маленький образец ArrayList>(), который вы используете для заполнения списка? Просто небольшой пример –