рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ: рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝рд┐рдВрдЧ рд▓рд┐рд╕реНрдЯ

рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдкрд░ рд▓реЗрдЦ рдХреА рдирд┐рд░рдВрддрд░рддрд╛, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕реЗ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдкрд░ рдЖрдЗрдХрди рдФрд░ рдЗрди рдорджреЛрдВ рдореЗрдВ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдирд╛ред рд╣рдо рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рднреА рдЧреМрд░ рдХрд░реЗрдВрдЧреЗред

рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЕрдкрдиреЗ рд▓реЗрдЦрдХ рдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред

рдЙрджрд╛рд╣рд░рдг: рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде ListActivityред


рдЖрдк рд╕реВрдЪреА рдорджреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдПрдбреЗрдкреНрдЯрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реВрдЪреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдорд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдЗрдХрди рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдбреЗрд╕ / рд▓реЗрдЖрдЙрдЯ рдлрд╝реЛрд▓реНрдбрд░ "de.vogella.android.listactivity" рдореЗрдВ "rowlayout.xml" рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > <ImageView android:id="@+id/icon" android:layout_width="22px" android:layout_height="22px" android:layout_marginLeft="4px" android:layout_marginRight="10px" android:layout_marginTop="4px" android:src="@drawable/ic_launcher" > </ImageView> <TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@+id/label" android:textSize="20px" > </TextView> </LinearLayout> 

рдЕрдкрдиреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рдореНрди рдореЗрдВ рдмрджрд▓реЗрдВред рдХреЛрдб рд▓рдЧрднрдЧ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо ArrayAdapter рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡ рдореЗрдВ рдкрд╛рда рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдорд╛рдирдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред
 package de.vogella.android.listactivity; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MyListActivity extends ListActivity { public void onCreate(Bundle icicle) { super.onCreate(icicle); String[] values = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" }; //    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.rowlayout, R.id.label, values); setListAdapter(adapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { String item = (String) getListAdapter().getItem(position); Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show(); } } 



рдЙрджрд╛рд╣рд░рдг: рдПрдХ рд▓рдЪреАрд▓реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде ListActivity


рдкрд┐рдЫрд▓реЗ рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ getView () рд╡рд┐рдзрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рд╡рд┐рдзрд┐ рдЖрдкрдХреЗ ListView рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред getView () рдПрдХ рджреГрд╢реНрдп рджреЗрддрд╛ рд╣реИред рдпрд╣ рджреГрд╢реНрдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ (рд╡реНрдпреВрдЧреНрд░реБрдк) рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рджреГрд╢реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдореЗрдЬ рд╡реНрдпреВ рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рд╡реНрдпреВред GetView () рдХреЗ рд╕рд╛рде рдЖрдк рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

XML рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ getView () рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк LayoutInflator рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо ArrayAdapter рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд╕реАрдзреЗ BaseAdapter рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд░рд▓ рдПрдбрд╛рдкреНрдЯрд░ рдкрд░рд┐рднрд╛рд╖рд╛

рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдбреЗрдкреНрдЯрд░ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЗрд╕рдХреЗ рдЕрдиреБрдХреВрд▓рди рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдирд╛ред рдмрд╕ рдЕрдкрдиреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рд╕реВрдЪреА рдЖрдЗрдЯрдо рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдФрд░ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдкрдиреЗ getView () рдореЗрдВ, рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ findViewById () рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдк рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рджреЛ рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: "no.png" рдФрд░ "ok.png"ред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ "Res / drawable-mdpi" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред рдЕрдкрдиреЗ рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рд╡реЗ рдирд╣реАрдВ рдорд┐рд▓реЗ рд╣реИрдВ, рддреЛ рдмрд╕ "icon.png" рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░, рдЪрд┐рддреНрд░рдордп рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрдВред

рдПрдХ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ тАЬMySimpleArrayAdapterтАЭ рдЬреЛ рд╣рдорд╛рд░реЗ рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
 package de.vogella.android.listactivity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class MySimpleArrayAdapter extends ArrayAdapter<String> { private final Context context; private final String[] values; public MySimpleArrayAdapter(Context context, String[] values) { super(context, R.layout.rowlayout, values); this.context = context; this.values = values; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.rowlayout, parent, false); TextView textView = (TextView) rowView.findViewById(R.id.label); ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); textView.setText(values[position]); //    Windows  iPhone String s = values[position]; if (s.startsWith("Windows7") || s.startsWith("iPhone") || s.startsWith("Solaris")) { imageView.setImageResource(R.drawable.no); } else { imageView.setImageResource(R.drawable.ok); } return rowView; } } 

рдЗрд╕ рдПрдбрд╛рдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MyList рд╡рд░реНрдЧ рдХреЛ рдирд┐рдореНрди рдореЗрдВ рдмрджрд▓реЗрдВ

 package de.vogella.android.listactivity; import android.app.ListActivity; import android.os.Bundle; public class MyListActivity extends ListActivity { public void onCreate(Bundle icicle) { super.onCreate(icicle); String[] values = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" }; MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(this, values); setListAdapter(adapter); } } 

рдЬрдм рдЖрдк рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдЖрдЗрдХрди рд╡рд╛рд▓реЗ рдЖрдЗрдЯрдо рджреЗрдЦреЗрдВрдЧреЗред

рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдбрд╛рдкреНрдЯрд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдВ

рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╕реНрдореГрддрд┐ рдХреА рдЦрдкрдд рдФрд░ рд╕рдордп рдХреА рдЦрдкрдд рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдВрдбреНрд░реЙрдЗрдб рдЖрдкрдХреА рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ (рд╡рд┐рдЪрд╛рд░реЛрдВ) рдХреЛ рдорд┐рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрдм рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдкреНрд░рдмрдВрдзрди рдХреЛ getView () рд╡рд┐рдзрд┐ рдореЗрдВ рдХрдиреНрд╡рд░реНрдЯ рд╡реНрдпреВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реМрдВрдкрддреЗ рд╣реИрдВред

рдЖрдкрдХрд╛ рдПрдбрд╛рдкреНрдЯрд░ рдЗрд╕ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ "рдмреНрд▓реЛрдЯрд┐рдВрдЧ" рд╕реЗ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдореЗрдореЛрд░реА рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЖрдкрдХреЛ рдХрдиреНрдЯреИрдВрдЯ рдХреЗ рд▓рд┐рдП рдХрдиреНрд╡рд░реНрдЯ рд╡реНрдпреВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрджрд┐ рдореМрдЬреВрджрд╛ рд╡реНрдпреВрд╡реЗрд░ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рдореМрдЬреВрджрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдирдпрд╛ рдбреЗрдЯрд╛ рднреЗрдЬрдХрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред

рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ViewHolder рдореЙрдбрд▓ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред FindViewById () рд╡рд┐рдзрд┐ рдХрд╛рдлреА рд╕рдВрд╕рд╛рдзрди рдЧрд╣рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЛ рд╕реАрдзреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред

ViewHolder рд╕реВрдЪреА рдЖрдЗрдЯрдо рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ ViewHolder рд╕реЗрдЯрдЯреИрдЧ () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрддреНрд╡ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп рдореЗрдВ рдПрдХ рд▓рд╛рдЧреВ рд▓рд┐рдВрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдЗрдЯрдо рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо getTag () рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ViewHolder рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд▓реЛрдбреЗрдб рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рджреЛрдиреЛрдВ рддрдХрдиреАрдХреЛрдВ (рдореМрдЬреВрджрд╛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рд╡реНрдпреВрд╣реЛрд▓реНрдбрд░ рдореЙрдбрд▓ рдХреЛ рдкреБрди: рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ) рдореЗрдВ рд▓рдЧрднрдЧ 15% рдХреА рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖рдХрд░ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ред

De.vogella.android.listactivity рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, MyArrayAdapter.java рд╡рд░реНрдЧ рдмрдирд╛рдПрдВред
 package de.vogella.android.listactivity; import android.app.Activity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class MyArrayAdapter extends ArrayAdapter<String> { private final Activity context; private final String[] names; public MyArrayAdapter(Activity context, String[] names) { super(context, R.layout.rowlayout, names); this.context = context; this.names = names; } //           //    static class ViewHolder { public ImageView imageView; public TextView textView; } @Override public View getView(int position, View convertView, ViewGroup parent) { // ViewHolder       ViewHolder holder; //   ,    //             View rowView = convertView; if (rowView == null) { LayoutInflater inflater = context.getLayoutInflater(); rowView = inflater.inflate(R.layout.rowlayout, null, true); holder = new ViewHolder(); holder.textView = (TextView) rowView.findViewById(R.id.label); holder.imageView = (ImageView) rowView.findViewById(R.id.icon); rowView.setTag(holder); } else { holder = (ViewHolder) rowView.getTag(); } holder.textView.setText(names[position]); //    Windows  iPhone String s = names[position]; if (s.startsWith("Windows7") || s.startsWith("iPhone") || s.startsWith("Solaris")) { holder.imageView.setImageResource(R.drawable.no); } else { holder.imageView.setImageResource(R.drawable.ok); } return rowView; } } 

 package de.vogella.android.listactivity; import android.app.ListActivity; import android.os.Bundle; public class MyListActivity extends ListActivity { public void onCreate(Bundle icicle) { super.onCreate(icicle); String[] values = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" }; setListAdapter(new MyArrayAdapter(this, values)); } } 



рдЙрдиреНрдирдд рд╕реВрдЪреА


рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдкрд░ рд▓реЙрдиреНрдЧ рдХреНрд▓рд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ

рдЖрдк рджреГрд╢реНрдп рдореЗрдВ LongItemClickListener рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, getListView () рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реВрдЪреА рджреГрд╢реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ setOnItemLongClickListener () рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдВрдмреА-рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред
 package de.vogella.android.listactivity; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MyList extends ListActivity { /** ,     . */ public void onCreate(Bundle icicle) { super.onCreate(icicle); //        ListActivity String[] names = new String[] { "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone", "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone" }; ArrayAdapter<String> adapter = new TwoLayoutsArrayAdapter(this, names); setListAdapter(adapter); ListView list = getListView(); list.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MyList.this, "Item in position " + position + " clicked", Toast.LENGTH_LONG).show(); //  "",    ,  // onListItemClick    return true; } }); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); //  ,    Object o = this.getListAdapter().getItem(position); String keyword = o.toString(); Toast.makeText(this, "You selected: " + keyword, Toast.LENGTH_SHORT) .show(); } } 

рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡

рдЖрдкрдХреА рд╕реВрдЪреА рдЖрдЗрдЯрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╡реЗ рджреГрд╢реНрдп рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рд╕реВрдЪреА рдЖрдЗрдЯрдо рдореЗрдВ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдЖрдк рдЖрдЗрдЯрдо рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рдЕрднреА рднреА рдЙрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ "rowbuttonlayout.xml" рд╕реВрдЪреА рдЖрдЗрдЯрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдПрдБред
 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/label" android:textSize="30px"></TextView> <CheckBox android:id="@+id/check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4px" android:layout_marginRight="10px" android:layout_alignParentRight="true" ></CheckBox> </RelativeLayout> 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдореЙрдбрд▓ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдП рдХрд┐ рддрддреНрд╡ рдФрд░ рдЙрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдирд╛рдо рд╣реИред
 package de.vogella.android.listactivity; public class Model { private String name; private boolean selected; public Model(String name) { this.name = name; selected = false; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isSelected() { return selected; } public void setSelected(boolean selected) { this.selected = selected; } } 

рдЕрдЧрд▓рд╛ рдПрдбреЗрдкреНрдЯрд░ рдмрдирд╛рдПрдВред рдпрд╣ рдПрдбреЗрдкреНрдЯрд░ рдЪреЗрдХрдмреЙрдХреНрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдпрджрд┐ рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдореЙрдбрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рднреА рдмрджрд▓рддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХ рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕реЗрдЯрдЯреИрдЧ () рдкрджреНрдзрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдирд╛ рдореЙрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
 package de.vogella.android.listactivity; import java.util.List; import android.app.Activity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; public class InteractiveArrayAdapter extends ArrayAdapter<Model> { private final List<Model> list; private final Activity context; public InteractiveArrayAdapter(Activity context, List<Model> list) { super(context, R.layout.rowbuttonlayout, list); this.context = context; this.list = list; } static class ViewHolder { protected TextView text; protected CheckBox checkbox; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = null; if (convertView == null) { LayoutInflater inflator = context.getLayoutInflater(); view = inflator.inflate(R.layout.rowbuttonlayout, null); final ViewHolder viewHolder = new ViewHolder(); viewHolder.text = (TextView) view.findViewById(R.id.label); viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check); viewHolder.checkbox .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Model element = (Model) viewHolder.checkbox .getTag(); element.setSelected(buttonView.isChecked()); } }); view.setTag(viewHolder); viewHolder.checkbox.setTag(list.get(position)); } else { view = convertView; ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position)); } ViewHolder holder = (ViewHolder) view.getTag(); holder.text.setText(list.get(position).getName()); holder.checkbox.setChecked(list.get(position).isSelected()); return view; } } 

рдЕрдВрдд рдореЗрдВ, рдЕрдкрдирд╛ ListView рдирд┐рдореНрди рдореЗрдВ рдмрджрд▓реЗрдВред
 package de.vogella.android.listactivity; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; public class MyList extends ListActivity { /** ,     . */ public void onCreate(Bundle icicle) { super.onCreate(icicle); //   ,     ListActivity ArrayAdapter<Model> adapter = new InteractiveArrayAdapter(this, getModel()); setListAdapter(adapter); } private List<Model> getModel() { List<Model> list = new ArrayList<Model>(); list.add(get("Linux")); list.add(get("Windows7")); list.add(get("Suse")); list.add(get("Eclipse")); list.add(get("Ubuntu")); list.add(get("Solaris")); list.add(get("Android")); list.add(get("iPhone")); //      list.get(1).setSelected(true); return list; } private Model get(String s) { return new Model(s); } } 

рдЬрдм рдЖрдк рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рддрддреНрд╡ рдЪрд┐рд╣реНрди рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА, рдЬреЛ рдЖрдкрдХреЗ рдореЙрдбрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред



рдмрд╣реБ рдЪрдпрди


рдЖрдк рдПрдХрд▓ рдФрд░ рдмрд╣реБ-рдЪрдпрди рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рджреЗрдЦреЗрдВред рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, listView.getCheckedItemPositions () рдпрд╛ listView.getCheckedItemPositions () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдореЛрдВ рдХреА рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк listView.getCheckedItemIds () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
 package de.vogella.android.listactivity; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class MyList extends ListActivity { /** ,     . */ public void onCreate(Bundle icicle) { super.onCreate(icicle); //   ,    ListActivity String[] names = new String[] { "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone", "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone" }; setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, android.R.id.text1, names)); ListView listView = getListView(); listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); } } 

 package de.vogella.android.listactivity; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class MyList extends ListActivity { /**     . */ public void onCreate(Bundle icicle) { super.onCreate(icicle); //   ,    ListActivity String[] names = new String[] { "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone", "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone" }; setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, android.R.id.text1, names)); ListView listView = getListView(); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); } } package de.vogella.android.listactivity; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class MyList extends ListActivity { /**     . */ public void onCreate(Bundle icicle) { super.onCreate(icicle); //   ,    ListActivity String[] names = new String[] { "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone", "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone" }; setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, android.R.id.text1, names)); ListView listView = getListView(); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); } } 


рд╣реИрдбрд░ рдФрд░ рдкрд╛рдж


рдЖрдк рдЕрдкрдиреА рд╕реВрдЪреА рдореЗрдВ рдордирдорд╛рдиреЗ рддрддреНрд╡ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рджреЛ TextViews рдХреЗ рдмреАрдЪ рдПрдХ рд╕реВрдЪреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд▓рд┐рд╕реНрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, "@android: id / list" рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреА рд╣реЛрдЧреА ListActivity рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ TextView рд╣рдореЗрд╢рд╛ ListView (рд╣реИрдбрд░) рдХреЗ рдКрдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╕реВрдЪреА рдХреЗ рдЕрдВрдд / рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреЗрд╡рд▓ Footer рдФрд░ Header рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдареАрдХ рди рд╣реЛрдВ, рддреЛ рдЖрдкрдХреЛ view.setHeaderView () рдпрд╛ view.setFooterView () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 package de.vogella.android.listactivity; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; public class MyList extends ListActivity { /**    . */ public void onCreate(Bundle icicle) { super.onCreate(icicle); //   ,    ListActivity String[] names = new String[] { "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone", "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone" }; View header = getLayoutInflater().inflate(R.layout.header, null); View footer = getLayoutInflater().inflate(R.layout.footer, null); ListView listView = getListView(); listView.addHeaderView(header); listView.addFooterView(footer); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, android.R.id.text1, names)); } } 

SimpleCursorAdapter


рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдпрд╛ рд╕реАрдзреЗ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдиреЗ ListView рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SimpleCursorAdapter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЧрддрд┐рд╡рд┐рдзрд┐ "MyListActivity" рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ "de.vogella.android.listactivity.cursor" рдмрдирд╛рдПрдБред рдРрд╕реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВред
 package de.vogella.android.listactivity.cursor; import android.app.ListActivity; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.widget.ListAdapter; import android.widget.SimpleCursorAdapter; public class MyListActivity extends ListActivity { /**      */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Cursor mCursor = getContacts(); startManagingCursor(mCursor); //     ,    // SimpleListAdapter    . ListAdapter adapter = new SimpleCursorAdapter(this, // . android.R.layout.two_line_list_item, //    mCursor, //   ,   . //  ,   . new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME }, // ,         new int[] { android.R.id.text1, android.R.id.text2 }); //  . setListAdapter(adapter); } private Cursor getContacts() { //   Uri uri = ContactsContract.Contacts.CONTENT_URI; String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME }; String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" + ("1") + "'"; String[] selectionArgs = null; String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; return managedQuery(uri, projection, selection, selectionArgs, sortOrder); } } 

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдиреЗ рд╕рдВрдкрд░реНрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред (AndroidMififest.xml рдореЗрдВ "Android.permission.READ_CONTACTS" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)ред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реБрдзрд╛рд░реЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрд░реЛрдд рдореЗрдВ рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рдЯрд╛рдЗрдкреЛрд╕ рд╣реИрдВред

рдореИрдВ рдкрд╢реНрдЪрд╛рддрд╛рдк рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ, рд╢реБрд░реВ рдореЗрдВ рдЗрд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдпрд╣рд╛рдБ рд╕реЗред рдЬреЗрд╕реНрдЯрди рдХреА рдиреЛрдХ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдФрд░ рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рд╕реАрдЦрд╛ред

Source: https://habr.com/ru/post/In133575/


All Articles