2016-01-01 2 views
0

Ниже мой Java классВ ListView все значения становятся вставлено в елей позиции

значение строки s происходит из буфера базы данных, Я хочу, чтобы каждый раз, когда значение приходит я сохраняется в ListView в качестве первого Clickable элемент .. Но что происходит, все значения становятся сохранены в первой позиции ListView в качестве пункта 1

   import android.database.Cursor; 
      import android.os.Bundle; 
       import android.support.v7.app.AppCompatActivity; 
       import android.widget.ArrayAdapter; 
       import android.widget.ListView; 
       import android.widget.TextView; 

       import java.util.ArrayList; 
       import java.util.Arrays; 


     public class HistoryActivity extends AppCompatActivity { 

ListView lv; 
String s= null; 
TextView tv1; 
DatabaseHelper mydb; 
StringBuffer buffer; 
private ArrayAdapter<String> listAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.acticity_history); 
    lv = (ListView) findViewById(R.id.listView); 
    mydb = new DatabaseHelper(this); 

    Cursor res = mydb.getAllData(); 
    if(res.getCount() == 0) 
    { 
     return; 

    } 

    buffer = new StringBuffer(); 
    while(res.moveToNext()){ 
     buffer.append(""+ res.getString(1)+ "\n"); 
    } 
    s = buffer.toString(); 

    String[] values = new String[]{s}; 


    ArrayList<String> planetList = new ArrayList<String>(); 
    planetList.addAll(Arrays.asList(values)); 

    listAdapter = new ArrayAdapter<String>(this, R.layout.simpleraw, planetList); 

    lv.setAdapter(listAdapter);} }  

Ниже мой XML макет для ListView

<?xml version="1.0" encoding="utf-8"?> 

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

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/listView" 
    android:layout_gravity="center_horizontal" 
    android:background="#000000"/> 
</LinearLayout> 

ниже мой simpleraw файл макета для TextView

 <?xml version="1.0" encoding="utf-8"?> 

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rowTextView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:textColor="#FFFFFF" 
    android:textSize="16sp" > 
</TextView> 

ответ

2

Все ваши значения добавляются к String s. Заменить код с нижеследующим,

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.acticity_history); 
lv = (ListView) findViewById(R.id.listView); 
mydb = new DatabaseHelper(this); 

Cursor res = mydb.getAllData(); 
if(res.getCount() == 0) 
{ 
    return; 
} 

else 
{ 
    ArrayList<String> planetList = new ArrayList<String>(); 
    while(res.moveToNext()){ 
    planetList.add(res.getString(1)); 
    } 

    listAdapter = new ArrayAdapter<String>(this, R.layout.simpleraw, planetList); 

    lv.setAdapter(listAdapter); 
    } 
} 
} 

Установите OnItemClickListener на ваш ListView,

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     { 
      String itemName = (String) lv.getItemAtPosition(position); 
      Intent intent = new Intent(currentActivity.this,newActivity.class); 
      intent.putExtra("some_string", itemName); 
      startActivity(intent); 
     }    
    } 
+0

Спасибо так много ....... –

0

Вы были добавления строки для базы данных в StringBuffer и Следующий код не даст вам все элементы в массиве. Массив будет иметь только один элемент.

String[] values = new String[]{s}; 

Используйте следующий код.

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.acticity_history); 
     lv = (ListView) findViewById(R.id.listView); 
     mydb = new DatabaseHelper(this); 

     Cursor res = mydb.getAllData(); 
     if(res.getCount() == 0) 
     { 
      return; 

     } 

     ArrayList<String> planetList = new ArrayList<String>(); 
     while(res.moveToNext()){ 
      planetList.add(res.getString(1)); 
     } 

     listAdapter = new ArrayAdapter<String>(this, R.layout.simpleraw, planetList); 

    }