【问题标题】:My ListView consist an ImageView and a TextView i need to get the Text from the TextView我的 ListView 包含一个 ImageView 和一个 TextView 我需要从 TextView 获取文本
【发布时间】:2011-03-15 09:55:47
【问题描述】:

我的ListView 包含一个ImageView 和一个TextView 我需要从TextView 获取文本。 int 我按下的列表的位置 (onItemClick)。

我该怎么做?

1 类有一个按钮,然后当你按下我移动到下一个活动 (CountryView) 并期望从下一个活动中返回一个文本(所选国家/地区的名称)

这两个类有一个ListViewImageViewTextView),数据从数据库中获取并显示在ListView 上。

我的问题是回到 1 类选择的国家名称。

非常感谢您的帮助!!!

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.home);

   // final int recquestCode = 0;
    final Button btnCountry = (Button) findViewById(R.id.fromButton);
    btnCountry.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {
            Intent pingIntent = new Intent("CountryView");
            pingIntent.putExtra("btnText", " ");
            pingIntent.setClass(Travel.this, CountryView.class);
            startActivityForResult(pingIntent, RECEIVE_MESSAGE);
        }
    }); 

    /*  Button btnSearch = (Button) findViewById(R.id.searchButton);
    btnSearch.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {
            Intent intent = new Intent(v.getContext(), ResultView.class);
            startActivityForResult(intent, 0);
        }
    });*/
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{

    super.onActivityResult(requestCode, resultCode, data);
    if (data.hasExtra("response")){
        Button b = (Button)findViewById(R.id.fromButton);
        CharSequence seq = data.getCharSequenceExtra("response");
        b.setText(seq);
    }
}

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.country);

    mListUsers = getCountry();
    lvUsers = (ListView) findViewById(R.id.countrylistView);
    lvUsers.setAdapter(new ListAdapter(this, R.id.countrylistView, mListUsers)); 

   // lvUsers.setTextFilterEnabled(true);
   // String extraMsg1 = getIntent().getExtras().getString("extra1");

    lvUsers.setOnItemClickListener(new OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View view,int position, long id)
        {
            // When clicked, show a toast with the TextView text
            //textItem=view;
            //         Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
            //       Toast.LENGTH_SHORT).show();

            Intent pongIntent = new Intent();
            // lvUsers.getItemAtPosition(position);

            t = (TextView) view;
            Log.v("fffvd"+t, null);
            t.setText(getIntent().getStringExtra("btnText"));
            String strText = t.getText().toString();

            //((TextView) view).getText().toString()

            pongIntent.putExtra("response",strText);
            setResult(Activity.RESULT_OK,pongIntent);
            finish();

            // startActivity(new Intent(CountryView.this,TravelPharmacy.class)); 
        }
     });
}

public ArrayList<Country> getCountry(){             
    DBHelper dbAdapter=DBHelper.getDBAdapterInstance(this);
    try {
        dbAdapter.createDataBase();
    } catch (IOException e) {
        Log.i("*** select ",e.getMessage());
    }
    dbAdapter.openDataBase();       
    String query="SELECT * FROM Pays;";
    ArrayList<ArrayList<String>> stringList = dbAdapter.selectRecordsFromDBList(query, null);
    dbAdapter.close();

    ArrayList<Country> countryList = new ArrayList<Country>();
    for (int i = 0; i < stringList.size(); i++) {
        ArrayList<String> list = stringList.get(i);
        Country country = new Country();
        try {
            //country.id = Integer.parseInt(list.get(0));
            country.pays = list.get(1);
        //  country.age = Long.parseLong(list.get(2));
        } catch (Exception e) {
            Log.i("***" + TravelPharmacy.class.toString(), e.getMessage());
        }
        countryList.add(country);
    }
    return countryList;
}

@Override
public void onDestroy()
{
    //     adapter.imageLoader.stopThread();
    lv.setAdapter(null);
    super.onDestroy();
}

public OnClickListener listener=new OnClickListener()
{
    @Override
    public void onClick(View arg0)
    {
        //       adapter.imageLoader.clearCache();
        ((BaseAdapter) adapter).notifyDataSetChanged();
    }
};

CountryAdapter 类

public class CountryAdapter extends BaseAdapter {
    private Activity activity;
    private String[] data;
    private  LayoutInflater inflater=null;
    // public ImageLoader imageLoader; 

    public CountryAdapter(Activity a, String[] d)
    {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        return data.length;
    }

    public Object getItem(int position) {
        return position;
    }

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

    public  class ViewHolder
    {
        public TextView text;
        public ImageView image;
    }

    public View getView(int position, View convertView, ViewGroup parent) 
    {
        View vi=convertView;
        ViewHolder holder;
        if(convertView==null)
        {
            vi = inflater.inflate(R.layout.singlecountry, null);
            holder=new ViewHolder();
            holder.text=(TextView)vi.findViewById(R.id.text);;
            holder.image=(ImageView)vi.findViewById(R.id.image);
            vi.setTag(holder);
        }
        else
            holder=(ViewHolder)vi.getTag();

        holder.text.setText("item "+data[position]);
        holder.image.setTag(data[position]);
        return vi;
    }
}

ListAdapter 类

private class ListAdapter extends ArrayAdapter<Country> {  // --CloneChangeRequired
    private ArrayList<Country> mList;  // --CloneChangeRequired
    private Context mContext;

    public ListAdapter(Context context, int textViewResourceId,ArrayList<Country> list) { // --CloneChangeRequired
        super(context, textViewResourceId, list);
        this.mList = list;
        this.mContext = context;
    }

    public View getView(int position, View convertView, ViewGroup parent)
    {
        View view = convertView;
        try{
        if (view == null) {
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = vi.inflate(R.layout.singlecountry, null);    // --CloneChangeRequired(list_item)
        }
        final Country listItem = mList.get(position);   // --CloneChangeRequired                
        if (listItem != null) {
            // setting singleCountry views                      
        //  ( (TextView) view.findViewById(R.id.tv_id) ).setText( listItem.getId()+"");
            ( (TextView) view.findViewById(R.id.text) ).setText( listItem.getPays() );
            //((ImageView)view.findViewById(R.id.image)).setImageDrawable(drawable.world);
            //( (TextView) view.findViewById(R.id.tv_age) ).setText( listItem.getAge()+"" );

        }}catch(Exception e){
            Log.i(CountryView.ListAdapter.class.toString(), e.getMessage());                
        }
        return view;
    }
}

【问题讨论】:

  • 请提供邮政编码,以便我们了解您的情况

标签: android listview textview


【解决方案1】:

当您向列表添加内容时,您可以将哈希映射添加到适配器查看的数组列表中。然后您可以获取名称值对的值。

【讨论】:

  • 我没有在我的列表中添加任何内容,我是从数据库中获取的,感谢您的帮助!!
【解决方案2】:

我想你想得到你点击的列表的位置,很简单你可以使用 OnItemClickListener 如下

YourList.setOnItemClickListener(new OnItemClickListener(){

        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
                           int position=arg2;
                          // where position is the clicked position 

    }   }

如果您将数据存储在字符串数组中,则将此位置说数组 [位置] 传递给字符串数组,您可以获得文本..

【讨论】:

  • 我需要将列表中的文本(每个项目都有一个图像和文本)放在正确的位置
  • 您是否将数据库中的值存储在字符串数组或其他内容中?
  • 我没有存储,我只是从数据库中读取值并在 ListView 中显示
  • 您可以发布您的代码吗?也请查看此链接,这可能会给您任何想法。stackoverflow.com/questions/5297011/…
  • 我同意。代码会很有用。听起来您只是在寻找完整的代码。
猜你喜欢
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2015-06-14
  • 2018-01-02
  • 2012-10-14
相关资源
最近更新 更多