1
는 할이 됐나요?어댑터 목록보기 항목 클릭 이벤트
@Override
protected void onPostExecute(final ChannelPair p) {
HiddenChannelsListAdapter adapter = new HiddenChannelsListAdapter(p.ctx, p.channelList);
p.lv.setAdapter(adapter);
p.lv.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Log.i("CLICKED ON LV ITEM", "YEA");
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
실제로 이벤트가 발생하지 않는다고 생각합니다. 적어도 항목이 선택되지 않았습니까?
UPDATE는 그래서 모두 같은 파일에 이제 그는 AsyncTask를에서 물건을 제거하고 새로운 스레드에 추가. 하지만 여전히, 나는 클릭이 연결되어이 제품은 항목
package com.example.tvrplayer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
public class ChannelsDialogPreference extends DialogPreference {
public static Context ctx;
// Activity activity;
public ChannelsDialogPreference(Context context, AttributeSet attrs) {
super(context, attrs);
this.ctx = context;
}
@Override
protected View onCreateDialogView() {
// Set loading spinner
// Start looking for channels
// When complete, show channels
LayoutInflater inflater = ((SettingsActivity) ctx).getLayoutInflater();
final View vw = inflater.inflate(R.layout.channel_content_view, null);
// Do this in a new Thread
Thread thread = new Thread()
{
@Override
public void run() {
try {
final JSONArray channels;
String username = null;
String linkid = null;
final String apiurl = "http://192.168.2.136:8080";
final String channelID = null;
final DatabaseHandler db = new DatabaseHandler(ctx);
List<User> users = db.getAllUsers();
for (User cn : users) {
linkid = cn.getLinkID();
username = cn.getUserName();
}
db.close();
final ArrayList< HashMap < String, String > > channelList = new ArrayList < HashMap < String, String > >();
try {
if (channelID != null) {
channels = Json.getJson(apiurl + "/rest/channel/"+ linkid +"/"+ username + "/" + channelID, "GET");
Log.i("CHANNELS", channels.toString());
for (int i=0; i < channels.length(); i++) {
JSONObject json_data = channels.getJSONObject(i);
String name = json_data.getString("Name");
String channelid = json_data.getString("ChannelID");
HashMap<String, String> channelObject = new HashMap<String, String>();
// if (json_data.getString("ParentPath") == "") {
channelObject.put("id", channelid);
channelObject.put("name", name);
channelList.add(channelObject);
// }
}
} else {
channels = Json.getJson(apiurl + "/rest/channel/"+ linkid +"/"+ username, "GET");
Log.i("CHANNELS", channels.toString());
for (int i=0; i < channels.length(); i++) {
JSONObject json_data = channels.getJSONObject(i);
String name = json_data.getString("Name");
String channelid = json_data.getString("ChannelID");
HashMap<String, String> channelObject = new HashMap<String, String>();
Log.i("CHANNEL LEN", ""+ json_data.getString("ParentID").length());
if (json_data.getString("ParentID").length() < 32) {
channelObject.put("id", channelid);
channelObject.put("name", name);
channelList.add(channelObject);
}
}
}
((Activity)ctx).runOnUiThread(new Runnable() {
public void run() {
HiddenChannelsListAdapter adapter = new HiddenChannelsListAdapter(ctx, channelList);
ListView lv = (ListView) vw.findViewById(R.id.list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
Log.i("CLICKED ON LV ITEM", "YEA");
}
});
}
});
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
thread.start();
return vw;
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
persistBoolean(positiveResult);
}
@Override
public void onClick (DialogInterface dialog, int which)
{
super.onClick(dialog, which);
//
Log.v("which", Integer.toString(which));
//
if(which == -1) { //Clear all
// new ChannelHandler().execute(apiurl, username, linkid, vw, ctx, channelID);
}
}
}
에서 클릭을 얻을 수 없습니다
((Activity)ctx).runOnUiThread(new Runnable() {
public void run() {
HiddenChannelsListAdapter adapter = new HiddenChannelsListAdapter(ctx, channelList);
ListView lv = (ListView) vw.findViewById(R.id.list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
Log.i("CLICKED ON LV ITEM", "YEA");
}
});
}
});
임 내가 그렇지 않으면이 작업을 수행 할 방법을 잘에서
notifychange()
listView
합니다 않았다. 나는 어댑터에 (웹에서) 항목을 추가하기 전에로드 웹 URL에서 목록을 기다려야한다. – Harry은 AsyncTask를 외부에 같은 코드를 작성합니다. OnCreate() 메서드에 씁니다. –
그래서 AsynTask를 꺼내나요? 이 부품이 아닌 – Harry