4

I am getting list of titles from DB and adding those titles to layout using ArrayList. This layout is created by using adapters. I want open another layout when i click on titles displayed in this layout.How can i solve this problem?Any suggestions please....

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.Bundle;
import android.app.ListActivity;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class FullDetails extends ListActivity  {

    ArrayList<String> listItems=new ArrayList<String>();
ArrayAdapter<String> adapter;
    private ListView lv;
    int clickCounter=0;
    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.activity_full_details);
       adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listItems);
         setListAdapter(adapter);
        fullItems(null);


    }
JSONArray all=new JSONArray();
    String size;
    public void fullItems(View v) {
        String result = "";
         InputStream is=null;
        try{

            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://MOTal.com/and/events.jsp");
                HttpResponse response = httpclient.execute(httppost);
                        HttpEntity entity = response.getEntity();
                     is = entity.getContent();
        }catch(Exception e){
                Log.e("log_tag", "Error in http connection "+e.toString());
        }
        try{
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);

                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                }
                is.close();

                result=sb.toString();
        }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
        }
        try{
                JSONArray jArray = new JSONArray(result);
                            for(int i=0;i<jArray.length();i++){

                        JSONObject json_data = jArray.getJSONObject(i);

                    size=json_data.getString("size");

                   for(int j=0;j<Integer.parseInt(size);j++){

                     all=json_data.getJSONArray("res"+j);
listItems.add(all.get(0)+" \n venue:"+all.get(1)+" Price:"+all.get(3));
                   }

                }

        }
        catch(JSONException e){
                Log.e("log_tag", "Error parsing data "+e.toString());
        }

        adapter.notifyDataSetChanged();
    }
}

activity_full_details.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false"
    />
</LinearLayout>
7
  • 1
    add onClick to ArrayList ? Commented Mar 14, 2014 at 9:14
  • on click to arraylist?? i guess you want a listview row click listener. Commented Mar 14, 2014 at 9:14
  • @blackbelt,@raghunandan Thanks for your reply.If it is possible onclick to arraylist it solves my problem Commented Mar 14, 2014 at 9:27
  • 1
    I do not know. What kind of problem do you have? Commented Mar 14, 2014 at 9:28
  • Here jsonArray not print any data ne.? Commented Mar 14, 2014 at 9:56

4 Answers 4

7

What you are looking for is List Item click listener. You can try lv<your listview's obj>.setOnItemCLickListener below is the example for you.

listView.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {
    Toast.makeText(getApplicationContext(),
      "Click ListItem Number " + position, Toast.LENGTH_LONG)
      .show();
  }
}); 

Follow this basic example

And there is nothing like onClick to ArrayList, clicks are set for views.

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

Comments

0

After setting the adapter, you have to set the "OnItemClickListener":

getListView().setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
        // Your logic when clicking. You can get the object for that row by 
        // calling parent.get(position) and casting to your data type in your adapter.
        // which in this case seems to be string.
    }
});

Comments

0

Take a look at solution in this example, think it is the way:

ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {
//Here put the code for each item. You now the position in the array because is the same as item.
}

Comments

0

Try this

 @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    Toast.makeText(getApplicationContext(), "Test", Toast.LENGTH_LONG).show();
}

Comments

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.