public class Show_Lock_Activity extends AppCompatActivity{
String E_mail;
SharedPreferences setting;
ListViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_lock_activity);
Log.i("test", "Show_Lock_Activity");
final ListView listview;
// Adapter 생성
adapter = new ListViewAdapter();
// 리스트뷰 참조 및 Adapter달기
listview = (ListView) findViewById(R.id.List_View);
listview.setAdapter(adapter);
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
//String a=(String)adapterView.getItemAtPosition(i);//null
//String a=(String)adapterView.getAdapter().getItem(i);//null
//String a=adapter.getItem(i).toString();//null
Log.i("test","a : "+a);
AlertDialog.Builder alert=new AlertDialog.Builder(view.getContext());
alert.setTitle("확인");
alert.setMessage("삭제 하시겠습니까?");
alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
alert.show();
return false;
}
});
setting = getSharedPreferences("setting", 0);
E_mail = setting.getString("ID", "");
Searcher searcher = new Searcher();
searcher.Start_Searcher("~", new OnFinishSearchListener() {
@Override
public void onSuccess(List<Item> itemList) {
showResult(itemList); // 검색 결과 보여줌
}
@Override
public void onFail() {
}
});
}
/*여기있어야함*/
private void showResult(List<Item> itemList) {
Log.i("test1", "showResult()");
Log.i("test1", "itemList size: " + itemList.size());
for (int i = 0; i < itemList.size(); i++) {
final Item item = itemList.get(i);
Log.i("test1", "itemList size: " + itemList.size());
final String Image = item.Contents_image;
final String Context = item.Contents_text;
final String Time = item.time;
creaeteDrawableFromUrl cdf = new creaeteDrawableFromUrl();
cdf.execute(Image,Context,Time);
}
}
class creaeteDrawableFromUrl extends AsyncTask<String, Void, Drawable> {
String text;
String time;
@Override
protected Drawable doInBackground(String... strings) {
String url = strings[0];
text = strings[1];
time = strings[2];
try {
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src");
return d;
} catch (Exception e) {
}
return null;
}
@Override
protected void onPostExecute(Drawable drawable) {
adapter.addItem(drawable,text ,time);
adapter.notifyDataSetChanged();
}
}
}
어댑터로 add.item 해서 리스트뷰에 등록 한 후
longclick해서 글자나 숫자나 데이터든 뭐든 가져오고싶은데 다 null 값이 뜹니다.
왜그런지 , 어떻게 해야하는지 설명좀 부탁드리겠습니다.
이건 listviewitem 입니다.
public class ListViewItem {
private Drawable Image;
private String Context_str;
private String Time_str;
public void setImage(Drawable image){
Image=image;
}
public void setContext_str(String context_str) {
Context_str = context_str;
}
public void setTime_str(String time_str){
Time_str=time_str;
}
public Drawable getImage(){
return this.Image;
}
public String getContext_str(){
return this.Context_str;
}
public String getTime_str(){
return this.Time_str;
}
}
listviewadapter 입니다.
public class ListViewAdapter extends BaseAdapter {
private ArrayList<ListViewItem> listViewItemList = new ArrayList<ListViewItem>() ;
@Override
public int getCount() {
return listViewItemList.size();
}
@Override
public Object getItem(int i) {
return null;
}
// 지정한 위치(position)에 있는 데이터와 관계된 아이템(row)의 ID를 리턴. : 필수 구현
@Override
public long getItemId(int position) {
return position ;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
final Context context = parent.getContext();
// "listview_item" Layout을 inflate하여 convertView 참조 획득.
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item, parent, false);
}
// 화면에 표시될 View(Layout이 inflate된)으로부터 위젯에 대한 참조 획득
ImageView iconImageView = (ImageView) convertView.findViewById(R.id.image) ;
TextView titleTextView = (TextView) convertView.findViewById(R.id.context) ;
TextView descTextView = (TextView) convertView.findViewById(R.id.time) ;
// Data Set(listViewItemList)에서 position에 위치한 데이터 참조 획득
ListViewItem listViewItem = listViewItemList.get(position);
// 아이템 내 각 위젯에 데이터 반영
iconImageView.setImageDrawable(listViewItem.getImage());
titleTextView.setText(listViewItem.getContext_str());
descTextView.setText(listViewItem.getTime_str());
return convertView;
}
// 아이템 데이터 추가를 위한 함수. 개발자가 원하는대로 작성 가능.
public void addItem(Drawable icon, String title, String desc) {
ListViewItem item = new ListViewItem();
item.setImage(icon);
item.setContext_str(title);
item.setTime_str(desc);
listViewItemList.add(item);
}
}
알려주시면 정말 감사하겠습니다.