2011-01-08 3 views

Antwort

2

Sie sollten dem Beispiel des offiziellen Notizblock-Tutorials folgen. Es ist sehr umfassend. Es macht 95% von dem, was Sie tun möchten.

http://developer.android.com/resources/tutorials/notepad/index.html

+0

Ich kann nicht herausfinden, wie man das nimmt und in der Lage ist, die Dinge zu verwenden, die es in meiner App zeigt. – Cg2916

+0

Ich weiß, ich brauche eine SQLite-Datenbank. Ich möchte möglichst wenig Extrastücke haben. – Cg2916

+0

Gehen Sie Schritt für Schritt durch dieses Tutorial und sagen Sie mir genau, wo Sie stecken bleiben. Es wird Zeit brauchen, um alles durchzugehen, aber das muss getan werden. In Bezug auf den Code enthält dieses Tutorial überhaupt keinen Fluff (obwohl ich zugeben werde, dass es in Bezug auf Erklärungen sehr wortwörtlich ist). Du brauchst einen DB-Adapter, da geht wirklich nichts. Machen Sie zuerst das Tutorial, dann kümmern Sie sich um das Erstellen einer Datenbank mit Ihrem Text bereits dort. –

1

Nun, hier ist ein Beispielcode. Es gibt eine Schaltfläche zum Hinzufügen von Text in der Liste und langes Drücken auf Listenelement wird es entfernen.

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<Button 
    android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:text="Add Item" /> 

<ListView 
    android:id="@+id/list_view" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

dialog_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<EditText 
    android:id="@+id/edit_box" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:inputType="text" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:orientation="horizontal" 
    android:weightSum="2" > 

    <Button 
     android:id="@+id/button_ok" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="OK" /> 

    <Button 
     android:id="@+id/button_cancel" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="CANCEL" /> 
</LinearLayout> 

MainActivity.java

package com.example.listexample; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemLongClickListener; 
import android.widget.BaseAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener, 
     OnItemLongClickListener { 

    private ArrayList<String> datasource; 
    private MyAdapter adapter; 
    private Dialog dialog; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     datasource = new ArrayList<String>(); 
     adapter = new MyAdapter(); 
     ListView listView = (ListView) findViewById(R.id.list_view); 
     listView.setAdapter(adapter); 
     listView.setOnItemLongClickListener(this); 

     findViewById(R.id.button).setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       dialog = new Dialog(MainActivity.this); 
       dialog.setContentView(R.layout.dialog_layout); 
       dialog.findViewById(R.id.button_cancel).setOnClickListener(
         MainActivity.this); 
       dialog.findViewById(R.id.button_ok).setOnClickListener(
         MainActivity.this); 
       dialog.show(); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    private class MyAdapter extends BaseAdapter { 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return datasource.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return datasource.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      TextView view = (TextView) convertView; 
      if (null == view) { 
       view = new TextView(MainActivity.this); 
       view.setPadding(10, 10, 10, 10); 
      } 
      view.setText(datasource.get(position)); 
      return view; 
     } 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.button_cancel: 
      dialog.dismiss(); 
      break; 

     case R.id.button_ok: 
      String text = ((EditText) dialog.findViewById(R.id.edit_box)) 
        .getText().toString(); 
      if (null != text && 0 != text.compareTo("")) { 
       datasource.add(text); 
       dialog.dismiss(); 
       adapter.notifyDataSetChanged(); 
      } 

      break; 
     } 
    } 

    @Override 
    public boolean onItemLongClick(AdapterView<?> listView, View view, 
      int position, long column) { 
     datasource.remove(position); 
     adapter.notifyDataSetChanged(); 
     return true; 
    } 
} 
+0

Was bedeutet diese Codezeile? "Ansicht = neue TextView (MainActivity.this);" Ich meine, ... was ist, wenn wir das nicht als Parameter für die Ansicht angeben? Ich verstehe diesen Teil einfach nicht .... – gumuruh

+0

Jedes UI-Widget erfordert Aktivitätskontext. "MainActivity.this" ist der Kontext, an den diese Textansicht gebunden ist. Ich denke, Kontext ist ein obligatorischer Parameter. Wir können es nicht vermeiden. –

Verwandte Themen