带有onClick项目的Android ListView

Agu*_*tín 33 methods android listview elements android-activity

我是一名新的程序员,也是Android的新手.我正在使用这个示例http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/并且效果很好.

现在我想让这些项目(戴尔,三星Galaxy S3等)调用一个函数来打开一个具有不同信息的新活动.

例如:

如果我联系戴尔,新的活动必须显示给我有关戴尔的信息.如果我触摸三星,同样的事情.

我用谷歌搜索,但找不到任何有用的,任何提示?我认为这是基本的,但我是新手,所以我真的不知道从哪里开始

Len*_*Bru 68

在您的活动中,您定义了列表视图

你写

listview.setOnItemClickListener(new OnItemClickListener(){   
    @Override
    public void onItemClick(AdapterView<?>adapter,View v, int position){
        ItemClicked item = adapter.getItemAtPosition(position);

        Intent intent = new Intent(Activity.this,destinationActivity.class);
        //based on item add info to intent
        startActivity(intent);
    }
});
Run Code Online (Sandbox Code Playgroud)

在您编写的适配器的getItem中

public ItemClicked getItem(int position){
    return items.get(position);
}
Run Code Online (Sandbox Code Playgroud)


dan*_*117 5

你用意图开始新的活动.将数据发送到intent的一种方法是传递在intent中实现parcelable的类.请注意,您正在传递该课程的副本.

http://developer.android.com/reference/android/os/Parcelable.html

在这里,我有一个onItemClick.我创建了intent并将整个类putExtra放入intent中.我发送的课程已经实现了parcelable.提示:您只需要在重新创建类所需的最低限度上实现parseable.即可能是一个文件名或类似字符串的东西,构造函数可以用它来创建类.新活动可以稍后getExtras,它实际上是使用其构造方法创建类的副本.

在这里,当我在列表视图中收到onclick时,我启动了应用程序的kmlreader类.

注意:下面的摘要是我传递的类的列表,因此get(position)返回类infact它是填充listview的相同列表

List<KmlSummary> summary = null;
...

public final static String EXTRA_KMLSUMMARY = "com.gosylvester.bestrides.util.KmlSummary";

...

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    lastshownitem = position;
    Intent intent = new Intent(context, KmlReader.class);
    intent.putExtra(ImageTextListViewActivity.EXTRA_KMLSUMMARY,
            summary.get(position));
    startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

稍后在新活动中,我将用可解析的类拉出来

kmlSummary = intent.getExtras().getParcelable(
                ImageTextListViewActivity.EXTRA_KMLSUMMARY);

//note:
//KmlSummary implements parcelable.
//there is a constructor method for parcel in
// and a overridden writetoparcel method
// these are really easy to setup.

public KmlSummary(Parcel in) {
    this._id = in.readInt();
    this._description = in.readString();
    this._name = in.readString();
    this.set_bounds(in.readDouble(), in.readDouble(), in.readDouble(),
    in.readDouble());
    this._resrawid = in.readInt();
    this._resdrawableid = in.readInt();
     this._pathstring = in.readString();
    String s = in.readString();
    this.set_isThumbCreated(Boolean.parseBoolean(s));
}

@Override
public void writeToParcel(Parcel arg0, int arg1) {
    arg0.writeInt(this._id);
    arg0.writeString(this._description);
    arg0.writeString(this._name);
    arg0.writeDouble(this.get_bounds().southwest.latitude);
    arg0.writeDouble(this.get_bounds().southwest.longitude);
    arg0.writeDouble(this.get_bounds().northeast.latitude);
    arg0.writeDouble(this.get_bounds().northeast.longitude);
    arg0.writeInt(this._resrawid);
    arg0.writeInt(this._resdrawableid);
    arg0.writeString(this.get_pathstring());
    String s = Boolean.toString(this.isThumbCreated());
    arg0.writeString(s);
}
Run Code Online (Sandbox Code Playgroud)

祝你好运Danny117


小智 5

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        Intent i = new Intent(getActivity(), DiscussAddValu.class);
        startActivity(i);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这个答案出现在低质量审查队列中,大概是因为您没有提供任何代码解释。如果此代码回答了问题,请考虑在答案中添加一些解释代码的文本。这样,您更有可能获得更多赞——并帮助提问者学习新知识。 (3认同)