문제

I am trying to implement an onClick listener into this code i found on wingnity

The code they provided worked perfectly,but i want to launch a new intent when each of the list item is clicked and show the videos from that particular channel. Here is returned Json object

{"videos":[{"Channel":"Google Developers","Youtube":"GoogleDevelopers","Image":"default.jpg"},{"Channel":"PHP Academy","Youtube":"phpacademy","Image":"default.jpg"},{"Channel":"Slidenerd","Youtube":"slidenerd","Image":"default.jpg"}]}

And here are my Java Files index

   package com.talagbe.community;

import java.io.IOException;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.loopj.android.http.AsyncHttpClient;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.ListView;

public class Index extends Activity {
 ListView list;
 VideoAdapter adapter;
 ArrayList<videos> videolist;
 String url;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.index);
        url="http://10.0.2.2/churchwebs/photo/";
        list = (ListView) findViewById(R.id.list);
        videolist = new ArrayList<videos>();

        new Task().execute("http://10.0.2.2/churchwebs/libs/channel_list.php");



    }



    public class Task extends AsyncTask<String,Void, Boolean>
    {

        @Override
        protected Boolean doInBackground(String... params) {
            try {
                    HttpClient client= new DefaultHttpClient();
                    HttpPost post =new HttpPost(params[0]);
                    HttpResponse response= client.execute(post);
                    int status= response.getStatusLine().getStatusCode();


                    if(status==200){
                        HttpEntity entity= response.getEntity();
                        String data = EntityUtils.toString(entity);

                        JSONObject jobject= new JSONObject(data);
                        JSONArray jarray = jobject.getJSONArray("videos");

                        for(int i=0; i<jarray.length();i++){
                            videos v = new videos();

                            JSONObject videos= jarray.getJSONObject(i);
                            v.setUser(videos.getString("Channel"));
                            v.setChannel(videos.getString("Youtube"));
                            v.setImage(url+videos.getString("Image"));
                            String c=(url+videos.getString("Image"));
                            Log.d("videos",c);

                            videolist.add(v);
                        } 
                        return true;

                    }


            } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return false;
        }

        @Override
        protected void onPostExecute(Boolean result) {

            if(result==false){
                Log.i("Error","Server did not respond");
            }else{

                VideoAdapter vadapter = new VideoAdapter(getApplicationContext(),R.layout.videos,videolist);
                list.setAdapter(vadapter);

            }
        }


    }




}

video.java

package com.talagbe.community;

public class videos {

private String channel;
private String user;
private String image;




public videos(){

}



public String getImage() {
    return image;
}



public void setImage(String image) {
    this.image = image;
}

public String getChannel() {
    return channel;
}



public void setChannel(String channel) {
    this.channel = channel;
}



public String getUser() {
    return user;
}



public void setUser(String user) {
    this.user = user;
}

  }

and the videoadpater.java

    package com.talagbe.community;

import java.util.ArrayList;
import java.util.List;

import com.loopj.android.image.SmartImageView;

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

public class VideoAdapter extends ArrayAdapter<videos> {

    ArrayList<videos> varray;
    int Resource;
    Context context;
    LayoutInflater inflater;

    public VideoAdapter(Context context, int resource, ArrayList<videos> objects) {
        super(context, resource, objects);
        // TODO Auto-generated constructor stub
        varray=objects;
        Resource= resource;
        this.context=context;
        inflater= (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
     }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
         ViewHolder holder;
         if(convertView==null){

             convertView= inflater.inflate(Resource,null);
             holder= new ViewHolder();
             holder.image= (SmartImageView) convertView.findViewById(R.id.imageView1);
             holder.channeltxt= (TextView) convertView.findViewById(R.id.textView1);
             holder.usertxt= (TextView) convertView.findViewById(R.id.textView2);


             convertView.setTag(holder);

         }else{
             holder=(ViewHolder)convertView.getTag();
         }
         holder.image.setImageUrl(varray.get(position).getImage());
         holder.channeltxt.setText(varray.get(position).getChannel());
         holder.usertxt.setText(varray.get(position).getUser());

        return convertView;


    }


    static class ViewHolder{

        public SmartImageView image;
        public TextView channeltxt;
        public TextView usertxt;

    }

  }

I would like to know how I can implement the Itemclicked for each item on the lists,Retrieve the youtube Username for each user in the next activity.

도움이 되었습니까?

해결책

in your postExecution

list.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {


   Toast.makeText(getBaseContext(),videolist.get(position).getuser(),Toast.LENGTH_SHORT).show();
    }
});

다른 팁

Do this after loading datas

list .setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
        videos videos = videolist.get(position); // Your object associated with the clicked row
    }
});

Update your index class like this.

public class Index extends Activity {
 ListView list;
 VideoAdapter adapter;
 ArrayList<videos> videolist;
 String url;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.index);
        url="http://10.0.2.2/churchwebs/photo/";
        list = (ListView) findViewById(R.id.list);
        videolist = new ArrayList<videos>();

        new Task().execute("http://10.0.2.2/churchwebs/libs/channel_list.php");
list.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {
                    // TODO Auto-generated method stub

    **//Your operation here**
    }
            });


    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top