In diesem kurzen Tipp erfahren Sie, wie Sie die Buttermesser-Bibliothek in Ihre Projekte integrieren, um die Ansichten in Ihrem Layout auf einfache Weise im Code Ihrer Anwendung zu instanziieren.
In jeder Android-Anwendung müssen Sie die findViewById ()
Methode für jede Ansicht im Layout, die Sie im Code Ihrer Anwendung verwenden möchten. Wenn jedoch die Designs der Anwendungen komplexer werden, wiederholt sich der Aufruf dieser Methode, und hier kommt die Buttermesser-Bibliothek ins Spiel.
Die Butter Knife-Bibliothek, die von Jake Wharton (Square Inc.) entwickelt und verwaltet wird, enthält Anmerkungen, die Entwicklern helfen, die Ansichten unserer Aktivitäten oder Fragmente zu instanziieren. Es hat auch Anmerkungen, um Ereignisse wie zu behandeln onClick ()
, onLongClick ()
, usw.
Im Beispielprojekt dieses Tutorials sehen Sie eine Beispielanwendung mit einer Aktivität und einem Fragment mit einer Implementierung, die die Butter Knife-Bibliothek verwendet, und einer regulären Implementierung. Lassen Sie uns die Schritte zur Integration der Buttermesser-Bibliothek erkunden.
Fügen Sie dem Projekt die folgende Abhängigkeit hinzu build.gradle Datei:
'com.jakewharton: butterknife: 6.1.0' kompilieren
Synchronisieren Sie als Nächstes Ihr Projekt mit dieser Datei, indem Sie auf die Schaltfläche "Synchronisieren" klicken.
In jeder Aktivität oder in jedem Fragment müssen Sie jeden Aufruf von löschen oder auskommentieren findViewById ()
Methode und fügen Sie die @InjectView
Anmerkung vor der Deklaration der Variablen, die den Bezeichner der Sicht angibt.
@InjectView (R.id.sample_textview) TextView sample_textview;
In dem onCreate ()
Methode der Tätigkeit, bevor Sie die Ansichten verwenden, Anruf injizieren
auf der Buttermesser
Objekt.
ButterKnife.inject (this);
Wenn Sie Fragmente verwenden, müssen Sie die Quelle der Ansichten in angeben onCreateView ()
Methode wie unten gezeigt.
View view = inflater.inflate (R.layout.sample_fragment, null); ButterKnife.inject (this, view);
Sie können nun die Ansichten im Code Ihrer Anwendung verwenden. Butter Knife übernimmt für Sie die Instantiierung jeder einzelnen Ansicht.
Das ist alles, was Sie tun müssen, um die Buttermesser-Bibliothek in einer Aktivität oder einem Fragment zu verwenden. Im nächsten Abschnitt werde ich Ihnen zeigen, wie Sie die Buttermesser-Bibliothek für die Verwendung von Listenansichten verwenden.
Das Listenansicht
class ist ein Sonderfall, der implementiert werden muss, da Sie die Ansichten in einem Adapter instanziieren. Um die Buttermesser-Bibliothek in eine Listenansicht zu integrieren, müssen Sie zunächst das benutzerdefinierte Layout für die Elemente in der Listenansicht erstellen. Ich werde meine nennen list_view_item
und fügen Sie das folgende Layout hinzu:
In diesem einfachen Layout zeigen wir ein Bild und Text. Als Nächstes müssen wir den Adapter für die Listenansicht erstellen. Nennen wir es ListViewAdapter
.
Die öffentliche Klasse ListViewAdapter erweitert den BaseAdapter LayoutInflater-Inflater; public ListViewAdapter (LayoutInflater inflater) this.inflater = inflater; @Override public int getCount () return 5; @Override public Object getItem (int position) return null; @Override public long getItemId (int position) return 0; @Override public View getView (int position, View convertView, ViewGroup-übergeordnetes Element) return null; statische Klasse ViewHolder Public ViewHolder (Ansichtsansicht)
Innerhalb der Adapterklasse gibt es eine statische Klasse namens ViewHolder
um es in Ordnung zu halten. Wir werden diese Klasse verwenden, um die Ansichten zu enthalten. Lassen Sie uns das implementieren ViewHolder
Klasse wie folgt:
statische Klasse ViewHolder @InjectView (R.id.image_in_item) ImageView Bild; @InjectView (R.id.textview_in_item) TextView-Text; public ViewHolder (Ansicht) ButterKnife.inject (this, view);
Jetzt müssen wir nur noch das ändern getView ()
Methode wie folgt:
public View getView (int position, View convertView, ViewGroup-übergeordnetes Element) ViewHolder-Inhaber; View view = inflater.inflate (R.layout.list_view_item, parent, false); holder = new ViewHolder (view); Picasso.with (inflater.getContext ()) .load ("http://lorempixel.com/200/200/sports/" + (Position + 1)) .into (holder.image); holder.text.setText ("Dies ist ein Text für die Bildnummer:" + Position); Ansicht zurückkehren;
Bei dieser Methode blase ich das benutzerdefinierte Layout im auf Aussicht
Variable und verwenden Sie es, um ein Objekt der ViewHolder
Klasse. Beachten Sie, dass wir das verwenden Picasso
Klasse, um entfernte Bilder zu laden und die Textansicht mit etwas Text zu füllen. Das Picasso-Tutorial kann hilfreich sein, wenn Sie sich mit dieser Bibliothek vertraut machen möchten.
Vergessen Sie nicht, die android.permission.Internet
Erlaubnis im Android-Manifest. Andernfalls kann Picasso keine Verbindung zum Internet herstellen und die Remote-Images laden.
Zum Schluss müssen Sie nur die Listenansicht instanziieren und den Adapter anschließen. Ich werde das in einer neuen Aktivität tun, ListViewActivity
, Wie nachfolgend dargestellt. Ein Beispiel für diese Implementierung finden Sie in den Quelldateien dieses Lernprogramms.
Öffentliche Klasse ListViewActivity erweitert ActionBarActivity @InjectView (R.id.listView) ListView-Liste; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_list_view); ButterKnife.inject (this); list.setAdapter (neuer ListViewAdapter ((LayoutInflater) getSystemService (LAYOUT_INFLATER_SERVICE)));
Sie können Butter Knife-Anmerkungen auch für Ereignisse verwenden. Wählen Sie die Anmerkung, die Sie verwenden möchten, entsprechend dem Ereignis, auf das Sie antworten möchten, und setzen Sie es vor die Methode, die Sie ausführen möchten, wenn das Ereignis auftritt.
@OnClick (R.id.sample_textview) public void showToastMessage () Toast.makeText (MainActivity.this, "Dies ist eine Nachricht aus der Aktivität", Toast.LENGTH_SHORT) .show ();
Sie können Buttermesser verwenden injizieren()
Methode überall, wo Sie sonst die verwenden würden findViewById ()
Methode, um Zeit zu sparen und Code-Wiederholung zu vermeiden, wenn Sie die Ansichten im Layout instanziieren müssen. Fühlen Sie sich frei, diesen schnellen Tipp zu teilen, wenn Sie es hilfreich fanden.