Schneller Tipp Mit Buttermesser Ansichten unter Android injizieren

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.

Einführung

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.

1. Verwenden der Buttermesserbibliothek

Schritt 1: Fügen Sie die Abhängigkeit hinzu

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.

Schritt 2: Verwenden Sie die Anmerkungen

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;

Schritt 3: Ansichten injizieren

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.

2. Verwenden der Buttermesserbibliothek mit Listenansichten

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))); 

3. Veranstaltungen

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 (); 

Fazit

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.