单击列表项到字符串中并传输到另一个活动

时间:2018-06-21 11:50:18

标签: java android

我制作了这个应用程序,在一个特定的活动中,我在列表视图中列出了所有项目。当您单击列表项时,它会转到发生类似情况的另一个活动。之后,我将单击的列表项转换为字符串,然后传输到第三个活动中,我可以在其中显示这些内容。 当我尝试显示它们时,这会在文本视图中显示应单击的文本项应出现的位置: enter image description here

这是第一个活动的代码:

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.common.internal.Objects;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

public class TicketCategory extends AppCompatActivity {
public static String Category;

public String getCategory() {
    return Category;
}

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

    populateTicketCategoryList();

   final ListView listView = (ListView) findViewById(R.id.lvTicketCategory);


        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
         @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            if (i == 0) {

                Category = listView.getItemAtPosition(i).toString();

                Intent intent = new Intent(TicketCategory.this, Subcategory.class);
                startActivity(intent);

            }

        }

        });
}

  private void populateTicketCategoryList()
   {
        ArrayList<CompTicketCategory> arrayOfTicket = CompTicketCategory.getTicket();

    CompTicketCategoryAdapter adapter = new CompTicketCategoryAdapter(this, arrayOfTicket);
    ListView listView = (ListView) findViewById(R.id.lvTicketCategory);
    listView.setAdapter(adapter);


}
 }

第二个活动的代码是:

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;

public class Subcategory extends AppCompatActivity {

public String Category;
public static String Subcat;

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


    populateSubcategoryList();

    final ListView listView = (ListView) findViewById(R.id.lvSubcategory);
    ArrayAdapter arrayAdapter = new ArrayAdapter<String>(Subcategory.this, android.R.layout.simple_list_item_1,arrayList);
    listView.setAdapter(arrayAdapter);


    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            Subcat = listView.getItemAtPosition(i).toString();
            Intent intent = new Intent(Subcategory.this, SubmitTicket.class);
            startActivity(intent);
        }
    });

这是活动的代码,应在其中显示两个单击的项目:

public class SubmitTicket extends AppCompatActivity {

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

    Spinner spinner = (Spinner) findViewById(R.id.spinner_priority);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.priority_array, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    final Button butt = findViewById(R.id.submit);
    butt.setOnClickListener(new View.OnClickListener()

    {
        public void onClick (View view){
            Toast.makeText(getApplicationContext(), "The ticket has been submitted", Toast.LENGTH_SHORT).show();
        }
    });
   TextView textView = (TextView)findViewById(R.id.Category_submit_report);
   textView.setText(TicketCategory.Category);

    TextView tv = (TextView)findViewById(R.id.Subcategory_submit_report);
    tv.setText(Subcategory.Subcat);


}

请帮助我。我将不胜感激任何输出。谢谢!

更新: 尝试

之后
 CompTicketCategory model = listView.getItemAtPosition(i);
                Category=model.Category; // your Category variable
                Category=model.getCategory();

显示此错误;

screenshot

2 个答案:

答案 0 :(得分:1)

您可以使用Intent Extra功能。

在第一个活动中,

Intent intent = new Intent(Subcategory.this, SubmitTicket.class);
switch1.putExtra("deviceID", listView.getItemAtPosition(i).toString(););
startActivity(intent);

然后下一个活动将他们召回,

Intent intent = getIntent();
String data = intent.getStringExtra("data");

答案 1 :(得分:0)

  

通过TicketCategory活动

尝试一下

使用此功能:

CompSubcategory  model = listView.getItemAtPosition(i);
Category=model.Category; // your Category variable
Category=model.getCategory(); // or use getter setter method

代替此:

Category = listView.getItemAtPosition(i).toString();