Здравствуйте, как можно сделать, что б при нажатии (нажал - отпустил, не зажимал) на пункт списка, менялся его фон?
P.S. Я нуб.
Парился, парился, потом получилось "разукрашивать" весь список, далее получилось красить нужный пункт списка, но он закрашивался да же если нажимать на другие пункты.
Ещё я понял, что да же если получится его покрасить, то потом нужно как то сохранить цветной фон для этого пункта при прокрутке, а как реализовать этот момент?
[syntax=java]package com.comcom.chernovik;
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends ActionBarActivity {
String[] name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ListView lvMain = (ListView) findViewById(R.id.lvMain);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.name,
R.layout.button_list_item);
lvMain.setAdapter(adapter);
lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View itemClicked, int position,
long id) {
lvMain.getChildAt(2).setBackgroundColor(Color.YELLOW);
}
});
}[/syntax]
ListView. Как сделать, что б при нажатии менлся цвет пункта?
Re: ListView. Как сделать, что б при нажатии менлся цвет пун
Изучайте селекторы
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: ListView. Как сделать, что б при нажатии менлся цвет пун
Друзья, товарищи, знакомые, дамы и господа, напишите пожалуйста поподробней что куда прописать. Надеюсь у кого нибудь найдётся желание и время откликнуться на зов помощи!
UPD:
Создал в папке drawable файk listselector.xml
[syntax=java]<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myselector">
<item
android:state_pressed="true"
android:drawable="@color/green" />
</selector>[/syntax]
main.xml
[syntax=java]<ListView
android:id="@+id/lvMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:listSelector="@drawable/listselector">
</ListView>[/syntax]
Теперь когда кликаешь просто на время подсвечивается. Побывал так же вместо "android:state_pressed="true"", прописывать "android:state_focused="true"" ничего не меняется, а при "android:state_selected="true"" вообще не нажимается.
UPD2: Изменил listselector.xml на:
[syntax=java]<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myselector">
<!-- Non focused states -->
<item
android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@color/darkblue" />
<item
android:state_focused="false"
android:state_selected="true"
android:state_pressed="false"
android:drawable="@color/green" />
<!-- Focused states -->
<item
android:state_focused="true"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@color/green" />
<item
android:state_focused="true"
android:state_selected="true"
android:state_pressed="false"
android:drawable="@color/green" />
<!-- Pressed -->
<item
android:state_pressed="true"
android:drawable="@color/green" />
</selector>[/syntax]
Теперь при нажатии щёлкается зелёным и окрашивается в синий, но при нажатии на новый пункт окрас с предыдущего исчезает и при прокрутке цепляется к верху экрана.
Я хоть в том направлении иду?
UPD:
Создал в папке drawable файk listselector.xml
[syntax=java]<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myselector">
<item
android:state_pressed="true"
android:drawable="@color/green" />
</selector>[/syntax]
main.xml
[syntax=java]<ListView
android:id="@+id/lvMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:listSelector="@drawable/listselector">
</ListView>[/syntax]
Теперь когда кликаешь просто на время подсвечивается. Побывал так же вместо "android:state_pressed="true"", прописывать "android:state_focused="true"" ничего не меняется, а при "android:state_selected="true"" вообще не нажимается.
UPD2: Изменил listselector.xml на:
[syntax=java]<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myselector">
<!-- Non focused states -->
<item
android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@color/darkblue" />
<item
android:state_focused="false"
android:state_selected="true"
android:state_pressed="false"
android:drawable="@color/green" />
<!-- Focused states -->
<item
android:state_focused="true"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@color/green" />
<item
android:state_focused="true"
android:state_selected="true"
android:state_pressed="false"
android:drawable="@color/green" />
<!-- Pressed -->
<item
android:state_pressed="true"
android:drawable="@color/green" />
</selector>[/syntax]
Теперь при нажатии щёлкается зелёным и окрашивается в синий, но при нажатии на новый пункт окрас с предыдущего исчезает и при прокрутке цепляется к верху экрана.
Я хоть в том направлении иду?