2

I have a prefilled DB in Assets, that will be copied and opened after App start. I have a activity who Displays the Column Name with 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();

and starts onItemClick a new intent who Displays the other colums (new activity get "Name" variable with 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); }

I get all SQL datas I need, but in the Default View. But I Need it customized like for exmaple :

I tried many many tutorials with custom listview and simplecursoradapter but I think all be defeated by the ArrayListString.

I hope anyone can help me I get frustrated..

Thanks!

1
  • What do you mean by all be defeated by the ArrayListString? Do you want to use an ArrayAdapter or a SimpleCursorAdapter? Commented Apr 29, 2013 at 13:50

1 Answer 1

4

This is an example of listview with its single row having two textviews. This the thing you wanted:

CustomListView.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;
    }
}

activity_main.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>

This is an example. You can make necessary edits to achieve what you want.

Sign up to request clarification or add additional context in comments.

2 Comments

IT WORKS! Had to add a new Cursor. Thank you so much!
Thank you so much for this! I am working on a project similar to the question and you just solved one of my biggest issues! Thanks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.