In diesem kurzen Tipp erfahren Sie, wie Sie die Butter Knife-Bibliothek in Ihre Projekte integrieren, um Ihre Layoutansichten einfach in Ihren Anwendungscode zu instanziieren.
Einführung
In jeder Android-App müssen Sie die verwenden findViewById() für jede Ansicht des Layouts, die Sie in Ihrem App-Code verwenden möchten. Da App-Designs jedoch zu komplexeren Layouts werden, wiederholt sich das Aufrufen dieser Methode, und genau hier setzt das an Buttermesser Bibliothek Komm herein!
Die Butter Knife Bibliothek, entwickelt und gepflegt von Jake Wharton (Square Inc.) enthält Anmerkungen, mit denen Entwickler Ansichten unserer Aktivitäten oder Fragmente instanziieren können. Es enthält auch Anmerkungen zur Behandlung von Ereignissen wie onClick(), onLongClick(), usw.
Im Beispielprojekt für dieses Lernprogramm sehen Sie eine Beispiel-App mit einer Aktivität und einen Ausschnitt mit einer Implementierung, die die Butter Knife-Bibliothek und eine Standardimplementierung verwendet. Lassen Sie uns die Schritte zur Integration der Butter Knife-Bibliothek untersuchen.
1. Verwenden der Buttermesser-Bibliothek
Schritt 1: Fügen Sie die Abhängigkeit hinzu
Fügen Sie dem Projekt die folgende Abhängigkeit hinzu build.gradle Datei:
compile 'com.jakewharton:butterknife:6.1.0'
Synchronisieren Sie dann Ihr Projekt mit dieser Datei, indem Sie auf die Schaltfläche „Synchronisieren“ klicken.
Schritt 2: Verwenden Sie Anmerkungen
In jeder Aktivität oder jedem Fragment müssen Sie jeden Anruf aus dem löschen oder kommentieren findViewById() Methode und fügen Sie die @InjectView Anmerkung vor der Deklaration der Variablen unter Angabe der Ansichtskennung.
@InjectView(R.id.sample_textview) TextView sample_textview;
Schritt 3: Injizieren Sie Ansichten
in dem onCreate() Aktivitätsmethode, bevor Sie die Ansichten verwenden, Anruf inject auf der Butterknife Objekt.
ButterKnife.inject(this);
Wenn Sie Fragmente verwenden, müssen Sie die Quelle der Ansichten in der angeben onCreateView() Methode wie unten gezeigt.
View view = inflater.inflate(R.layout.sample_fragment, null); ButterKnife.inject(this, view);
Sie können jetzt Ansichten in Ihrem Anwendungscode verwenden. Butter Knife kümmert sich darum, jede Ansicht für Sie zu instanziieren.
Das ist alles, was Sie tun müssen, um die Butter Knife-Bibliothek in einer Aktivität oder einem Shard zu verwenden. Im nächsten Abschnitt werde ich Ihnen zeigen, wie Sie die Butter Knife-Bibliothek zum Arbeiten mit Listenansichten verwenden.
2. Verwenden der Butter Knife Library mit Listenansichten
das ListView Klasse ist ein Sonderfall, der implementiert werden muss, da Sie Ansichten innerhalb eines Adapters instanziieren. Um die Butter Knife-Bibliothek in eine Listenansicht einzubetten, müssen Sie zuerst 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 werden ein Bild und Text angezeigt. Als nächstes müssen wir den Adapter für die Listenansicht erstellen. Nennen wir es ListViewAdapter.
public class ListViewAdapter extends 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 parent) {
return null;
}
static class ViewHolder{
public ViewHolder(View view){
}
}
}
In 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 es uns implementieren ViewHolder Klasse wie folgt:
static class ViewHolder{
@InjectView(R.id.image_in_item)
ImageView image;
@InjectView(R.id.textview_in_item)
TextView text;
public ViewHolder(View view){
ButterKnife.inject(this, view);
}
}
Alles was bleibt ist, das zu modifizieren getView() Methode wie folgt:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
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("This is a text for the image number: "+position);
return view;
}
Bei dieser Methode blase ich das benutzerdefinierte Layout innerhalb des auf view Variable und verwenden Sie es, um ein Objekt der zu erstellen ViewHolder Klassenzimmer. Beachten Sie, dass wir die verwenden Picasso Klasse zum Laden von Remote-Bildern und Füllen der Textansicht mit Text. Das Picasso-Tutorial ist möglicherweise hilfreich, wenn Sie sich mit dieser Bibliothek vertraut machen möchten.
Vergessen Sie nicht, das hinzuzufügen android.permission.Internet Autorisierung im Android-Manifest. Andernfalls kann Picasso keine Verbindung zum Internet herstellen oder die Remote-Bilder hochladen.
Schließlich müssen Sie nur die Listenansicht instanziieren und den Adapter anschließen. Ich werde dies in einer neuen Aktivität tun, ListViewActivity, Wie nachfolgend dargestellt. Ein Beispiel für diese Implementierung finden Sie in den Quelldateien für dieses Lernprogramm.
public class ListViewActivity extends ActionBarActivity {
@InjectView(R.id.listView)
ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
ButterKnife.inject(this);
list.setAdapter(new ListViewAdapter((LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE)));
}
}
3. Veranstaltungen
Sie können auch Butter Knife-Anmerkungen für Ereignisse verwenden. Wählen Sie die Anmerkung aus, die Sie verwenden möchten, basierend auf dem Ereignis, auf das Sie antworten möchten, und platzieren Sie sie vor der Methode, die Sie ausführen möchten, wenn das Ereignis auftritt.
@OnClick(R.id.sample_textview)
public void showToastMessage(){
Toast.makeText(MainActivity.this, "This is a message from the activity", Toast.LENGTH_SHORT).show();
}
Fazit
Sie können ein Buttermesser verwenden inject() wo immer Sie sonst die Methode verwenden würden findViewById() um Zeit zu sparen und das Wiederholen von Code zu vermeiden, wenn Sie Ansichten im Layout instanziieren müssen. Teilen Sie diesen kleinen Tipp mit, wenn Sie ihn nützlich fanden.
Unterstützen Sie unsere Arbeit ❤️
Wenn Ihnen dieser Artikel gefallen hat, können Sie uns mit einem Trinkgeld unterstützen, damit wir weiterhin großartige Inhalte veröffentlichen können.

























