Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android列表如何查看项目单击w/数据库时转到额外详细信息页面_Android_Android Intent - Fatal编程技术网

Android列表如何查看项目单击w/数据库时转到额外详细信息页面

Android列表如何查看项目单击w/数据库时转到额外详细信息页面,android,android-intent,Android,Android Intent,我正在制作一个应用程序,其中我的数据库中有不同的活动,它显示在我制作的自定义列表视图上,该视图显示用户的基本活动信息。我在列表视图中添加了一个McClickListener,因此它会将用户带到一个“详细信息”页面,在那里我想显示数据库中的更多信息。意图可以将用户发送到新活动,我在意图中还使用了putExtra函数来发送列表视图的位置,单击并在新页面上的toast中显示该位置,以测试它是否工作。一切都很好,但现在我正试图从数据库中获取信息。我试过看很多不同的教程,但都没有效果,我想如果我能在put

我正在制作一个应用程序,其中我的数据库中有不同的活动,它显示在我制作的自定义列表视图上,该视图显示用户的基本活动信息。我在列表视图中添加了一个McClickListener,因此它会将用户带到一个“详细信息”页面,在那里我想显示数据库中的更多信息。意图可以将用户发送到新活动,我在意图中还使用了putExtra函数来发送列表视图的位置,单击并在新页面上的toast中显示该位置,以测试它是否工作。一切都很好,但现在我正试图从数据库中获取信息。我试过看很多不同的教程,但都没有效果,我想如果我能在putExtra中获得要发送的活动的标题,那么我将能够显示活动表中的内容,其中putExtra title info=title在表中。但我似乎无法从表中获取标题并将其放入putExtra函数中。我正在使用Sugar ORM数据库

下面是我在ViewData类上显示列表视图的位置:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_data);
    final ListView listView = (ListView) findViewById(R.id.viewAll_listview);
    long count = Activitytable.count(Activitytable.class);
    if(count>0) {
        Activitytable.listAll(Activitytable.class);
        final List<Activitytable> activitytable = Activitytable.listAll(Activitytable.class);
        ViewAllListView madapter = new ViewAllListView(getApplicationContext(), activitytable);
        listView.setAdapter(madapter);
        listView.setClickable(true);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?>parent, View v, int position, long id) {

                Object o = getItem(position);
                Activitytable AT = Activitytable.findById(Activitytable.class,activitytable.get(position).getId());
                Intent i = new Intent(getApplicationContext(),Details.class);
                i.putExtra("listPosition",position);
                startActivity(i);

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

    }
        else

            {
                Toast.makeText(getApplicationContext(), "No Data Available in Table", Toast.LENGTH_LONG);
            }
        }

你可能想考虑这些变化:

ViewAllListView.java(您需要返回项目才能访问它)

ViewData.java(您可以检索项目,将其强制转换为Activitytable对象)并获取名称)

@覆盖
创建时受保护的void(Bundle savedInstanceState){
......
public void onItemClick(AdapterViewparent、视图v、内部位置、长id){
Activitytable o=(Activitytable)getItem(位置);
//您可以从对象o检索名称
i、 putExtra(“listName”,o.getName());
......
}

如果有帮助,请告诉我!编程愉快!

谢谢!您能帮我显示活动名称(标题)吗一旦我进入详细信息页面,因为它在Toast中显示得非常完美,但不会显示在我拥有的textview中。我试图非常简单地使用我在Toast中使用的相同类型的东西:titletext.setText(String.valueOf(data));当我测试并单击手机上的详细信息页面时,它不断出现错误。错误无法启动活动…'java.lang.nullPointerException:尝试调用虚拟方法'void android.widget.TextView.setText(java.lang.CharSequence)关于空对象引用“@KatyJones”当然可以,但这似乎是一个与此完全不同的问题。也许你可以开始一个问题,并将我链接到那里,或者找到一个类似的答案(如果以前已经回答过)。
public class ViewAllListView extends BaseAdapter {

public Context tcontext;
private LayoutInflater inflater;
public ViewHolder holder=null;
private List<Activitytable> activitytable = new ArrayList<>();

ViewAllListView(Context context, List<Activitytable> values)
{
    this.tcontext = context;
    this.activitytable = values;
    this.inflater = LayoutInflater.from(context);
}


public int getCount(){
    return activitytable.size();
}

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent){
    if(convertView == null){
        convertView=inflater.inflate(R.layout.layout_for_listview_show,null);
        holder = new ViewHolder();
        holder.title = (TextView) convertView.findViewById(R.id.title_textview);
        holder.Overall_rating = (TextView) convertView.findViewById(R.id.overallrating_textview);
        holder.Category = (TextView) convertView.findViewById(R.id.category_textview);
        holder.Average_price = (TextView) convertView.findViewById(R.id.averageprice_textview);
        convertView.setTag(holder);
    }
    else {
        holder = (ViewHolder)convertView.getTag();
    }
    holder.title.setText(this.activitytable.get(position).Title);
    holder.Overall_rating.setText(this.activitytable.get(position).Overall_rating);
    holder.Category.setText(this.activitytable.get(position).Category);
    holder.Average_price.setText(this.activitytable.get(position).Average_price);
    return convertView;
}
static class ViewHolder
{
    TextView title, Overall_rating, Category, Average_price;
}
}
public class Details extends AppCompatActivity {

TextView titletext;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_details);

    titletext = (TextView) findViewById(R.id.titletext);

    String data = getIntent().getSerializableExtra("listPosition").toString();

    Toast.makeText(getBaseContext(),String.valueOf(data),Toast.LENGTH_LONG).show();



}
}    
 public class ViewAllListView extends BaseAdapter {

  .....

  public Object getItem(int position) {
     //instead of return position;
     return activitytable.get(position); 
  }

  .....
}
 @Override
 protected void onCreate(Bundle savedInstanceState) {  

       ......
       public void onItemClick(AdapterView<?>parent, View v, int position, long id) {

            Activitytable o = (Activitytable) getItem(position);
            //you can retrieve the name from object o 
            i.putExtra("listName", o.getName());

       ......
 }