마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

listview에서 텍스트가 제대로 받아와 지지 않습니다

0 추천
package com.example.user.razerproject2;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

/**
 * Created by user on 2016-06-13.
 */
public class ListViewAdapter extends BaseAdapter {

    Button BB;

    TextView T1;
    TextView K1;
    TextView K2;
    TextView W1;
    Context context1, cont, contx;
    int pos;


    private ArrayList<ListViewItem> listViewItemList = new ArrayList<ListViewItem>() ;


    public ListViewAdapter() {
    }


    @Override
    public int getCount() {
        return listViewItemList.size() ;
    }

   
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        pos = position;
        context1 = parent.getContext();
        cont = parent.getContext();
        contx = parent.getContext();

        
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context1.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.listview_item, parent, false);
        }

        
        ImageView gearImageView = (ImageView) convertView.findViewById(R.id.IMV1) ;
        TextView titleTextView = (TextView) convertView.findViewById(R.id.textView1) ;
        TextView descTextView = (TextView) convertView.findViewById(R.id.textView2) ;
        TextView dd1TextView = (TextView) convertView.findViewById(R.id.textView3) ;
        TextView dd2TextView = (TextView) convertView.findViewById(R.id.textView4) ;
        TextView webadTextView = (TextView) convertView.findViewById(R.id.textView5);

        T1 = (TextView) convertView.findViewById(R.id.textView1);
        K1 = (TextView) convertView.findViewById(R.id.textView3);
        K2 = (TextView) convertView.findViewById(R.id.textView4);
        W1 = (TextView) convertView.findViewById(R.id.textView5);

        
        ListViewItem listViewItem = listViewItemList.get(position);

  
        gearImageView.setImageDrawable(listViewItem.getgear());
        titleTextView.setText(listViewItem.getTitle());
        descTextView.setText(listViewItem.getDesc());
        dd1TextView.setText(listViewItem.getDtail1());
        dd2TextView.setText(listViewItem.getDtail2());
        webadTextView.setText(listViewItem.getWebad());

        T1.setText(listViewItem.getTitle());
        K1.setText(listViewItem.getDtail1());
        K2.setText(listViewItem.getDtail2());
        W1.setText(listViewItem.getWebad());


        BB = (Button) convertView.findViewById(R.id.BB);
        BB.setTag(position);
        BB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View convertView) {
                if (K1.length() > 1) {
                    T1.setText(listViewItemList.get(position).toString());
                    K1.setText(listViewItemList.get(position).toString());
                    K2.setText(listViewItemList.get(position).toString());
                    W1.setText(listViewItemList.get(position).toString());
                    DialogSimple();
                }
            }
            private void DialogSimple() {
                AlertDialog.Builder alt_bld = new AlertDialog.Builder(cont);
                alt_bld.setMessage(K1.getText().toString() + K2.getText().toString()).setCancelable(false).setPositiveButton("Go, visit Website", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(W1.getText().toString()));
                        contx.startActivity(intent);
                    }
                })
                        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                // Action for 'NO' Button
                                dialog.cancel();
                            }
                        });
                AlertDialog alert = alt_bld.create();
                // Title for AlertDialog
                alert.setTitle(T1.getText().toString());
                // Icon for AlertDialog
                alert.show();
            }
        });
        return convertView;
    }

    
    @Override
    public long getItemId(int position) {
        return position ;
    }

   
    @Override
    public Object getItem(int position) {
        return listViewItemList.get(position) ;
    }

    public void addItem(Drawable gimage, String title, String desc, String dd1, String dd2, String web) {
        ListViewItem item = new ListViewItem();

        item.setGear(gimage);
        item.setTitle(title);
        item.setDesc(desc);
        item.setDtail1(dd1);
        item.setDtail2(dd2);
        item.setWebad(web);

        listViewItemList.add(item);
    }
}

안녕하십니까 다름이 아니라 리스트뷰에 버튼을 넣고

버튼에 다이얼로그를 넣어 다이얼로그에 리스트뷰 내용을 삽입하려 하는데

겟 포지션으로 받아와보니 text는 안뜨고 

 

이렇게 뜹니다....

어찌 해결방법이 없을까요?

김뀨뀨 (120 포인트) 님이 2016년 6월 15일 질문

1개의 답변

0 추천
listViewItemList.get(position).toString() 로 받으시면   listViewItemList.get(position) 는 java.lang.Object 가 됩니다. 즉 어떤 형식의 객체던지 다 받을 수 있는 것이지요. 이것은 view 일수도 viewgroup 일수도 있습니다. 이 Object 객체의 toString 함수는 객체가 가지고 있는 문자필드 값을 반환해주는 함수가 아닙니다.

따라서 커스터마이즈 리스트 아이템을 만드시던지 아니면 다른방식으로 개개의 리스트뷰의 아이템에 접근할수 있는 방법을 만드시고 그 리스트아이템의 특정 뷰에 접근해서 원하는 텍스트로 받아 오시면되지 않을까 합니다.

일반적으로 리스트뷰아이템은 일종의 뷰컬렉션들입니다. linearlayout 이나 relativelayout 같은 것들일걸로 생각되어집니다.

원하시는 작업에 힌트가 될수 있는 검색 키워드는 대충 '커스틈 리스트뷰' 등을 찾아보시는 것이 도움이 될듯 합니다.
컴러기 (22,230 포인트) 님이 2016년 6월 15일 답변
...