首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表视图在android开发中的位置

列表视图在android开发中的位置
EN

Stack Overflow用户
提问于 2012-12-02 02:37:17
回答 2查看 145关注 0票数 0

我正在尝试在android开发中获得列表视图的位置。我想获取位置值并将其保存到首选文件中。我拥有的代码是

代码语言:javascript
复制
public class Browse extends Activity {

private ListView mainListView;  
private ArrayAdapter<Card> listAdapter; 
public static final String userPrefs = "UserPrefs";

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

    mainListView = (ListView) findViewById( R.id.mainListView);  

    DatabaseHandler dh = new DatabaseHandler(this);

    // Remember to drop existing table if it exists
    dh.removeAll();

    // Insert 4 Lecturers into the database
    Log.d("Database: ", "Inserting values..");
    dh.addCard(new Card(1, "Katniss Evergreen", "11", "33", "55", "44",     R.drawable.katniss));
    dh.addCard(new Card(2, "Peeta Melark", "49", "44", "11", "65", R.drawable.peeta));
    dh.addCard(new Card(3, "Gale Hawthrone", "87", "32", "98", "50", R.drawable.gale));
    dh.addCard(new Card(4, "Haymitch", "30", "32", "45", "31", R.drawable.haymitch));
    dh.addCard(new Card(5, "Effie Trinket", "65", "54", "21", "34", R.drawable.effie));
    dh.addCard(new Card(6, "President Snow", "23", "45", "67", "21", R.drawable.snow));

    List<Card> list = dh.getAll();  

    // Create ArrayAdapter using the list of lecturers
    listAdapter = new ArrayAdapter<Card>(this, R.layout.simplerow, list);

    // Set the ArrayAdapter as the ListView's adapter.  
    mainListView.setAdapter( listAdapter );  

    mainListView.setOnItemClickListener(new OnItemClickListener() {


    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position,
            long id) {
        // TODO Auto-generated method stub
        String value = mainListView.getItemAtPosition(position).toString();
        SharedPreferences sp;
        sp = getSharedPreferences(userPrefs, Activity.MODE_PRIVATE); 
        SharedPreferences.Editor editor = sp.edit();
        editor.putString("name", value);
        editor.commit();
    }
    }); 



}



}

这是可行的,但它保存了实际的名称,所以如果我单击Katniss Evergreen,它将保存名称"Katniss Evergreen“。我不想要这个,我想要位置值,比如1代表凯特尼斯,2代表皮塔等等,有人知道我该怎么做吗?我整个周末都在做这件事,就是想不通:(我还是个新手。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-02 02:54:31

是从列表中获取位置,还是从Card对象中获取值?

如果来自list,则将position参数传递给onClick

否则,尝试获取Card对象并从中获取值。

代码语言:javascript
复制
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
        long id) {
    Card card  = (Card) mainListView.getItemAtPosition(position);
    int value = card.getId(); // Or other method

    SharedPreferences sp;
    sp = getSharedPreferences(userPrefs, Activity.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sp.edit();
    editor.putInt("name", value);
    editor.commit();
}
票数 1
EN

Stack Overflow用户

发布于 2012-12-02 02:48:28

如果想要将位置保存为解析为字符串的数字,请使用:

代码语言:javascript
复制
    String pos = Integer.toString(position);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13662460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档