Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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
Java 如何在我的listview中显示我的数据?_Java_Android - Fatal编程技术网

Java 如何在我的listview中显示我的数据?

Java 如何在我的listview中显示我的数据?,java,android,Java,Android,在我的应用程序中,我有一个listview。 listview包含一个ShareImageButton。 当我单击ImageButton时,我想在textview中共享每个项目的文本。 问题是如何公开我的文本视图,因为我想在其他活动中使用它 public class ListAdapter extends ArrayAdapter<String> { customButtonListener customListner; public interface custo

在我的应用程序中,我有一个listview。 listview包含一个ShareImageButton。 当我单击ImageButton时,我想在textview中共享每个项目的文本。 问题是如何公开我的文本视图,因为我想在其他活动中使用它

public class ListAdapter extends ArrayAdapter<String> {
    customButtonListener customListner;

    public interface customButtonListener {
        public void onButtonClickListner(int position,String value);
    }

    public void setCustomButtonListner(customButtonListener listener) {
        this.customListner = listener;
    }

    private Context context;
    private ArrayList<String> data = new ArrayList<String>();

    public ListAdapter(Context context, ArrayList<String> dataItem) {
        super(context, R.layout.child_listview, dataItem);
        this.data = dataItem;
        this.context = context;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);
            convertView = inflater.inflate(R.layout.child_listview, null);
            viewHolder = new ViewHolder();
            viewHolder.text = (TextView) convertView
                    .findViewById(R.id.childTextView);
           // textView= (TextView) convertView.findViewById(R.id.childTextView);
          //  viewHolder.text = textView;
            viewHolder.Button = (ImageButton) convertView
                    .findViewById(R.id.childButton);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        final String temp = getItem(position);
        viewHolder.text.setText(temp);
        viewHolder.Button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (customListner != null) {
                    customListner.onButtonClickListner(position,temp);
                }

            }
        });

        return convertView;
    }

    public class ViewHolder {
        TextView text;
        ImageButton Button;
    }


     and my mainactivity:
        public class MainActivity extends Activity implements
        customButtonListener {

    private ListView listView;
    ListAdapter adapter;
    ArrayList<String> dataItems = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String[] dataArray = getResources().getStringArray(R.array.listdata);
        List<String> dataTemp = Arrays.asList(dataArray);
        dataItems.addAll(dataTemp);
        listView = (ListView) findViewById(R.id.listView);
        adapter = new ListAdapter(MainActivity.this, dataItems);
        adapter.setCustomButtonListner(MainActivity.this);
        listView.setAdapter(adapter);

    }

    @Override
    public void onButtonClickListner(int position, String value) {

        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        sharingIntent.setType("text/plain");
        String shareBody = "HHHH";
        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject            Here");
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
        startActivity(Intent.createChooser(sharingIntent, "Share via"));
    }

您不需要共享TextView,但它是内容,并且根据您的代码,您正在将其传递给侦听器

在getView中注册侦听器时,您正在检索位置处的字符串,将其存储在temp中,在TextView中显示,并将其传递给侦听器,这是因为您将temp声明为final,以便在OnClick中使用它:

这是实现它的正确方法,因此您的问题不在这一部分,而是

稍后,在侦听器主体中,您将收到该字符串的值,但您没有使用它:

@Override
public void onButtonClickListner(int position, String value) {

    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
    sharingIntent.setType("text/plain");
    String shareBody = "HHHH";
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject            Here");
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
    startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
只需将shareBodyby值替换为,因为它包含单击的文本项。我的意思是:

删除sharebody并更改此行:

sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, value);

当前代码有什么问题?您的问题是什么…将tepxtview公开以在其他活动中使用它是没有意义的。相反,您应该从该文本视图中获取文本,将其作为额外文本放入您开始另一项活动的意图中。
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, value);