2

我在资产中有一个预填充的数据库,它将在应用程序启动后被复制和打开。我有一个使用 rawQuery 显示列名的活动

Cursor c = database.rawQuery("SELECT _id, Name from DB
 ORDER BY Name ASC", null);

         ArrayList<String> values = new ArrayList<String>();
         while (c.moveToNext()) {
             values.add(c.getString(c.getColumnIndex("Name")));

         }
         c.close();

并启动 onItemClick 显示其他列的新意图(新活动使用 i.putExtra 获取“名称”变量)

 private void getSQLData() { 
 Bundle extras = getIntent().getExtras();
 String Name = extras.getString("Name"); 

 DataBaseHelper myDbHelper = new DataBaseHelper(null); 
 myDbHelper = new DataBaseHelper(this); 
 SQLiteDatabase database = myDbHelper.getWritableDatabase(); 
 ListView lv = (ListView)findViewById(R.id.listView1);

 Cursor c = database.rawQuery("SELECT * from DB WHERE Name='"+Name+"' ORDER BY Name ASC", null); 

 ArrayList<String> values = new ArrayList<String>(); 
  while (c.moveToNext()) {
 values.add(c.getString(c.getColumnIndex("Name")));
 values.add(this.getString(R.string.x) + (c.getString(c.getColumnIndex("x"))+" "+this.getString(R.string.x)+":"));
 values.add((c.getString(c.getColumnIndex("y")) + this.getString(R.string.y) + " " + this.getString(R.string.y))); 
 }
 c.close(); 
 ArrayAdapter<String> NamenDetails = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,
 values);
 }
 lv.setAdapter(NamenDetails); }

我得到了我需要的所有 SQL 数据,但在默认视图中。但我需要像这样定制它:

我尝试了许多使用自定义列表视图和简单光标适配器的教程,但我认为所有教程都被 ArrayListString 打败了。

我希望任何人都可以帮助我我感到沮丧..

谢谢!

4

1 回答 1

4

这是一个列表视图的例子,它的单行有两个文本视图。这是你想要的东西:

自定义列表视图.java:

package com.customlistview;

import java.util.ArrayList;

import resources.PlacesListAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class CustomListView extends Activity {
    /** Called when the activity is first created. */

    private ArrayList<String> mPlacesData1 = new ArrayList<String>();
    private ArrayList<String> mPlacesData2 = new ArrayList<String>();
    PlacesListAdapter mPLAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mPlacesData1.clear();
        mPlacesData2.clear();

        mPlacesData1.add("ICD1");
        mPlacesData2.add("SubTitle1");
        mPlacesData1.add("ICD2");
        mPlacesData2.add("SubTitle2");
        mPlacesData1.add("ICD3");
        mPlacesData2.add("SubTitle3");
        mPlacesData1.add("ICD4");
        mPlacesData2.add("SubTitle4");
        mPlacesData1.add("ICD5");
        mPlacesData2.add("SubTitle5");
        mPlacesData1.add("ICD6");
        mPlacesData2.add("SubTitle6");
        mPlacesData1.add("ICD7");
        mPlacesData2.add("SubTitle7");
        mPlacesData1.add("ICD8");
        mPlacesData2.add("SubTitle8");

        ListView listView = (ListView) findViewById(R.id.listview);

        mPLAdapter = new PlacesListAdapter(CustomListView.this, mPlacesData1, mPlacesData2);
        listView.setAdapter(mPLAdapter);
    }
}

PlaceListAdapter.java:

package resources;

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.customlistview.R;

public class PlacesListAdapter extends BaseAdapter {
    // private Context mContext;
    private LayoutInflater mInflater;
    private ArrayList<String> AL_id_text = new ArrayList<String>();
    private ArrayList<String> AL_text = new ArrayList<String>();

    public PlacesListAdapter(Context c, ArrayList<String> AL_name_time,
            ArrayList<String> AL_name_time1) {
        mInflater = LayoutInflater.from(c);
        // mContext = c;
        this.AL_id_text = AL_name_time;
        this.AL_text = AL_name_time1;
    }

    public int getCount() {
        return AL_id_text.size();
    }

    public Object getItem(int position) {
        return AL_id_text.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final ViewHolder holder;
        if (convertView == null)
        {
            convertView = mInflater.inflate(R.layout.place_row, null);
            holder = new ViewHolder();

            holder.txt_maintext = (TextView) convertView
                    .findViewById(R.id.txt_maintext);
            holder.txt_mtext = (TextView) convertView
                    .findViewById(R.id.txt_mtext);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.txt_maintext.setText(AL_id_text.get(position));
        holder.txt_mtext.setText(AL_text.get(position));

        return convertView;
    }

    static class ViewHolder {
        TextView txt_maintext;
        TextView txt_mtext;
    }
}

活动主.xml:

<?xml version="1.0" encoding="UTF-8"?>
-<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <ListView android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/listview"> </ListView> </LinearLayout>

place_row.xml:

<?xml version="1.0" encoding="UTF-8"?>
-<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> -<LinearLayout android:orientation="vertical" android:layout_height="70dip" android:layout_width="match_parent" android:id="@+id/lin_main"> <TextView android:layout_height="20dip" android:layout_width="fill_parent" android:id="@+id/txt_maintext" android:singleLine="true" android:paddingRight="5dip" android:paddingLeft="5dip" android:layout_marginTop="5dip" android:textColor="#fff"/> <TextView android:layout_height="20dip" android:layout_width="fill_parent" android:id="@+id/txt_mtext" android:singleLine="true" android:paddingRight="5dip" android:paddingLeft="5dip" android:layout_marginTop="15dip" android:textColor="#fff"/> </LinearLayout> <ImageView android:layout_height="3dip" android:layout_width="match_parent" android:background="#0000ff"/> </LinearLayout>

这是一个例子。您可以进行必要的编辑以实现您想要的。

于 2013-04-29T13:53:06.460 回答