アンドロイドのListViewの背景について
Android Studio で開発をしていますが、始めて間もないのでわからないことだらけです。
どうか知識を貸してください。
現在ListViewでの背景を動的に変更したいと考えています(ゼブラカラーに変更)。
ただ、ネット上の先人達のサンプルを多数確認しましたが、解決できない問題点がいくつかあるので箇条書きにしていきます。
・AppcompatActivityを継承している(ターゲットバージョンを古く設定している、また新しい機能も使いたい)のでArrayAdapter<>を継承できない。
⇒getViewをオーバーライドして int position を持ってくることができない。
・動的に背景を変更したいので指定して変更ではなくif分岐で処理したい。
⇒int position が必要になってくる
(ex)if(position%2==0){
view.setBackgroundColor(Color.BLACK);
}else{
view.setBackgroundColor(Color.BLUE);
}
など
・そのほかのサンプルにあった getItemAtPosition などを利用しようとも考えたが利用できなかった。
positionだけを獲得する方法はあるのでしょうか?また、無理にpositionを獲得しなくても、このような処理を施すことはできるのでしょうか?
よろしくお願いします。以下サンプルを付け加えました。
public class MainActivity extends AppCompatActivity {
final String[] baseArray = {"ApplePie", "BananaBread", "CupCake", "Donut", "Eclair", "Froyo", "GingerBread", "Honeycomb", "IcecreamSandwich",
"JellyBean", "KitKat", "Lollipop", "Marshmallow"};
ListView list1;
Button btn1;
int position;
String item;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
findView();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_multiple_choice, baseArray);
list1.setAdapter(adapter);
/*if (position % 2 == 0) {
list1.setBackgroundColor(Color.rgb(100, 100, 100));
} else {
list1.setBackgroundColor(Color.RED);
}*/
}
@Override
public boolean onCreateOptionsMenu (Menu menu){
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected (MenuItem item){
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void findView() {
btn1 = (Button) findViewById(R.id.button1);
list1 = (ListView) findViewById(R.id.listView1);
}
}