9 Temmuz 2017 Pazar

ArrayAdapter Sınıfı

Giriş
Şu satırı dahil ederiz.
import android.widget.ArrayAdapter;
Bu sınıf gösterilecek veriyi ListView nesnesine tanıtır.
Veri bir layout dosyasına uygun olarak gösterilir. Layout dosyasında sadece TextView olabilir. Eğer daha karmaşık bir layout kullanmak istersek CustomAdapter sınıfı kullanılır.

XML
Şöyle yaparız.
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="match_parent"
  android:layout_height="match_parent">

  <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="16dp"
    android:textAlignment="gravity"
    android:layout_marginBottom="16dp"
    android:id="@+id/audioText"/>

</RelativeLayout>

constructor - context , resource, objects
Context olarak activity, resource olarak layout ID,
objects olarak bir dizi veya List arayüzünü gerçekleştiren bir liste alabilir. Şöyle yaparız
String[] list = //get data from your database
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, list); 
addAll metodu
Şöyle yaparız.
String[] strings = ...;
dataAdapter.addAll (strings);
clear metodu
Şöyle yaparız.
dataAdapter.clear ();
getFilter metodu
İmzası şöyledir.
@Override
public Filter getFilter();
Adapter içindeki bazı nesneler gösterilmeyebilir. Şöyle yaparız.
String searchQuery = searchPhrase.trim ();
if (searchQuery.length() > 0) {
  dataAdapter.getFilter ().filter(searchPhrase);
  dataAdapter.notifyDataSetChanged ();
  ...
}
getView metodu
İmzası şöyle
@Override
public View getView(int position, View convertView, ViewGroup parent);
Metodun içini şöyle yaparız.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
  // Get the data item for this position
  User user = getItem(position);    
  // Check if an existing view is being reused, otherwise inflate the view
  if (convertView == null) {
    convertView = LayoutInflater.from(getContext()).
      inflate(R.layout.item_user, parent, false);
  }
  // Lookup view for data population
  TextView tvName = (TextView) convertView.findViewById(R.id.tvName);
  TextView tvHome = (TextView) convertView.findViewById(R.id.tvHome);
  // Populate the data into the template view using the data object
  tvName.setText(user.name);
  tvHome.setText(user.hometown);
  // Return the completed view to render on screen
  return convertView;
}
notifyDataSetChanged metodu
Ekranı güncellemek için şöyle yaparız.
dataAdapter.notifydatasetChanged ();