Java 在片段中显示Listview

Java 在片段中显示Listview,java,android,Java,Android,我正在开发一款带有标签导航的Android应用程序。我有三个选项卡,我想在每个选项卡上显示单独的信息。在第一个选项卡上,我想显示从SQlite数据库检索的项目列表。这些项目是通过对话框输入的,效果很好。我保留主要活动中数据收集和显示的逻辑: package com.example.TodoList; import android.content.ContentValues; import android.content.Context; import android.content.Dialo

我正在开发一款带有标签导航的Android应用程序。我有三个选项卡,我想在每个选项卡上显示单独的信息。在第一个选项卡上,我想显示从SQlite数据库检索的项目列表。这些项目是通过对话框输入的,效果很好。我保留主要活动中数据收集和显示的逻辑:

package com.example.TodoList;

import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.app.AlertDialog;
import android.widget.SimpleCursorAdapter;
import android.database.sqlite.SQLiteDatabase;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.example.TodoList.db.TaskContract;
import com.example.TodoList.db.TaskDBHelper;
import com.example.TodoList.fragments.ThreeFragment;
import com.example.TodoList.fragments.TwoFragment;

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


public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private ListAdapter listAdapter;
    private TaskDBHelper helper;
    private Button btnIconTextTabs;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private int[] tabIcons = {
            R.drawable.ic_tab_favourite,
            R.drawable.ic_tab_call,
            R.drawable.ic_tab_contacts
    };


    private void setupTabIcons() {
        tabLayout.getTabAt(0).setIcon(tabIcons[0]);
        tabLayout.getTabAt(1).setIcon(tabIcons[1]);
        tabLayout.getTabAt(2).setIcon(tabIcons[2]);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_icon_text_tabs);
        //ListView listView = (ListView) findViewById(R.id.list);
        //listView.setAdapter(listAdapter);
        updateUI();
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        btnIconTextTabs = (Button) findViewById(R.id.btnIconTextTabs);
        //btnIconTextTabs.setOnClickListener(this);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
        setupTabIcons();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFrag(new Fragment(), "ONE");
        adapter.addFrag(new TwoFragment(), "TWO");
        adapter.addFrag(new ThreeFragment(), "THREE");
        viewPager.setAdapter(adapter);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        final EditText inputField = new EditText(this);
        builder.setNegativeButton("Cancel", null);


        switch (item.getItemId()) {
            case R.id.action_add_task:
                builder.setTitle("Add an article to your shopping list");
                builder.setMessage("What would you like to add?");
                builder.setView(inputField);
                builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        String task = inputField.getText().toString();
                        helper = new TaskDBHelper(MainActivity.this);
                        SQLiteDatabase db = helper.getWritableDatabase();
                        ContentValues values = new ContentValues();
                        values.clear();
                        values.put(TaskContract.Columns.TASK, task);
                        db.insertWithOnConflict(TaskContract.TABLE, null, values, SQLiteDatabase.CONFLICT_IGNORE);
                        updateUI();
                    }
                });

                builder.create().show();
                return true;

            case R.id.action_remove_task:
                builder.setTitle("Remove an article from the shopping list");
                builder.setMessage("Did you found this article?");
                builder.setNegativeButton("Remove", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        String task = inputField.getText().toString();
                        helper = new TaskDBHelper(MainActivity.this);
                        SQLiteDatabase db = helper.getWritableDatabase();
                        ContentValues values = new ContentValues();
                        values.clear();
                        updateUI();
                    }
                });

            case R.id.action_show_mylocation:
                LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                Log.d("MyTagGoesHere", "This is my log message at the debug level here");
                //Intent intent=new Intent(this,LbsGeocodingActivity.class);
                //startActivity(intent);
                Intent GeoLocationIntent = new Intent(MainActivity.this, GeoActivity.class);
                //myIntent.putExtra("key", value); //Optional parameters
                MainActivity.this.startActivity(GeoLocationIntent);

        }
        builder.create().show();
        return true;
    }

    private void updateUI() {
        helper = new TaskDBHelper(MainActivity.this);
        SQLiteDatabase sqlDB = helper.getReadableDatabase();
        Cursor cursor = sqlDB.query(TaskContract.TABLE,
                new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK},
                null, null, null, null, null);

        listAdapter = new SimpleCursorAdapter(
                this,
                R.layout.task_view,
                cursor,
                new String[]{TaskContract.Columns.TASK},
                new int[]{R.id.taskTextView},
                0
        );
    }


    public void onDoneButtonClick(View view) {
        View v = (View) view.getParent();
        TextView taskTextView = (TextView) v.findViewById(R.id.taskTextView);
        String task = taskTextView.getText().toString();

        String sql = String.format("DELETE FROM %s WHERE %s = '%s'",
                TaskContract.TABLE,
                TaskContract.Columns.TASK,
                task);


        helper = new TaskDBHelper(MainActivity.this);
        SQLiteDatabase sqlDB = helper.getWritableDatabase();
        sqlDB.execSQL(sql);
        updateUI();
    }

    public void onSubmitPriceClick(View view) {
        Intent SubmitPriceIntent = new Intent(MainActivity.this, SubmitPriceActivity.class);
        MainActivity.this.startActivity(SubmitPriceIntent);
    }

    public void onWebViewButtonClick(View view) {
        Intent intent = new
                Intent(Intent.ACTION_VIEW,
                Uri.parse("http://www.batprice.com:1337"));
        startActivity(intent);
        finish();
    }


    public void onGeoLocationButtonClick(View view) {
        LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Log.d("MyTagGoesHere", "This is my log message at the debug level here");
        Intent GeoLocationIntent = new Intent(MainActivity.this, GeoActivity.class);
        MainActivity.this.startActivity(GeoLocationIntent);
    }


    /*@Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btnIconTextTabs:
                startActivity(new Intent(MainActivity.this, IconTextTabsActivity.class));
                break;
        }
    }*/


    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFrag(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }


    }
}
package com.example.TodoList;
导入android.content.ContentValues;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.database.Cursor;
导入android.app.AlertDialog;
导入android.widget.SimpleCursorAdapter;
导入android.database.sqlite.SQLiteDatabase;
导入android.location.LocationManager;
导入android.net.Uri;
导入android.os.Bundle;
导入android.support.design.widget.TabLayout;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.support.v4.view.ViewPager;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.TextView;
导入com.example.TodoList.db.TaskContract;
导入com.example.TodoList.db.TaskDBHelper;
导入com.example.TodoList.fragments.ThreeFragment;
导入com.example.TodoList.fragments.TwoFragment;
导入java.util.ArrayList;
导入java.util.List;
公共类MainActivity扩展了AppCompatActivity{
专用工具栏;
私有ListAdapter ListAdapter;
私人任务助手;
私人按钮btnIconTextTabs;
私人摊位摊位;
私人视页机视页机;
私有int[]选项卡图标={
R.drawable.ic\u tab\u最爱,
R.drawable.ic\u tab\u呼叫,
R.drawable.ic\U tab\U触点
};
私有void setupTabIcons(){
tabLayout.getTabAt(0).setIcon(tabIcons[0]);
tabLayout.getTabAt(1).setIcon(tabIcons[1]);
tabLayout.getTabAt(2).setIcon(tabIcons[2]);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u图标\u文本\u选项卡);
//ListView ListView=(ListView)findViewById(R.id.list);
//setAdapter(listAdapter);
updateUI();
toolbar=(toolbar)findviewbyd(R.id.toolbar);
设置支持操作栏(工具栏);
btnIconTextTabs=(按钮)findviewbyd(R.id.btnIconTextTabs);
//btnIconTextTabs.setOnClickListener(这个);
设置支持操作栏(工具栏);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager=(viewPager)findViewById(R.id.viewPager);
设置viewPager(viewPager);
tabLayout=(tabLayout)findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
setupTabIcons();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.menu,menu);
返回true;
}
专用无效设置ViewPager(ViewPager ViewPager){
ViewPagerAdapter适配器=新的ViewPagerAdapter(getSupportFragmentManager());
addFrag(新片段(),“一”);
addFrag(新的TwoFragment(),“TWO”);
addFrag(新的ThreeFragment(),“THREE”);
viewPager.setAdapter(适配器);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
AlertDialog.Builder=新建AlertDialog.Builder(此);
最终编辑文本输入字段=新编辑文本(本);
builder.setNegativeButton(“取消”,null);
开关(item.getItemId()){
案例R.id.action\u add\u任务:
setTitle(“将一篇文章添加到您的购物清单中”);
setMessage(“您想添加什么?”);
builder.setView(输入字段);
setPositiveButton(“添加”,新建DialogInterface.OnClickListener()){
@凌驾
公共void onClick(DialogInterface,inti){
字符串任务=inputField.getText().toString();
helper=新的TaskDBHelper(MainActivity.this);
SQLiteDatabase db=helper.getWritableDatabase();
ContentValues=新的ContentValues();
value.clear();
value.put(TaskContract.Columns.TASK,TASK);
db.insertWithOnConflict(TaskContract.TABLE,null,value,SQLiteDatabase.CONFLICT\u IGNORE);
updateUI();
}
});
builder.create().show();
返回true;
案例R.id.action\u remove\u任务:
builder.setTitle(“从购物清单中删除物品”);
setMessage(“你找到这篇文章了吗?”);
setNegativeButton(“删除”,新建DialogInterface.OnClickListener()){
@凌驾
公共void onClick(DialogInterface,inti){
字符串任务=inputField.getText().toString();
helper=新的TaskDBHelper(MainActivity.this);
SQLiteDatabase db=helper.getWritableDatabase();
ContentValues=新的ContentValues();
value.clear();
updateUI();
}
});
案例R.id.行动\显示\位置:
LocationManager lm=(LocationManager)getSystemService(Context.LOCATION\u服务);
d(“MyTagGoesher”,“这是调试级别h的日志消息
package com.example.TodoList.fragments;

import android.content.Context;
import android.database.SQLException;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.example.TodoList.R;

import java.util.ArrayList;


public class OneFragment extends FragmentActivity {

    public OneFragment() {
        // Required empty public constructor
    }

    private class mylocationlistener implements LocationListener {
        @Override
        public void onLocationChanged(Location location) {
            if (location != null) {
                Log.d("LOCATION CHANGED", location.getLatitude() + "");
                Log.d("LOCATION CHANGED", location.getLongitude() + "");
                Toast.makeText(OneFragment.this,
                        location.getLatitude() + "" + location.getLongitude(),
                        Toast.LENGTH_LONG).show();
            }
        }
        @Override
        public void onProviderDisabled(String provider) {
        }
        @Override
        public void onProviderEnabled(String provider) {
        }
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        LocationListener ll = new mylocationlistener();
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);

        return inflater.inflate(R.layout.fragment_one, container, false);
    }

    /*
    public static class OneFragment extends Fragment {

        ListView list;
        list = (ListView) view.findViewById(R.id.listview);
        DataDB data = new DataDB();

        ArrayAdapter<String> listAdapter;

        public ListDoctorFragment() {
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            final View view = inflater.inflate(R.layout.listdoctor, container, false);

            ArrayList<String> names = new ArrayList<String>();
            try {
                names = data.getDoctorlistDB(getActivity());
            } catch (SQLException e) {
                e.printStackTrace();
            }

            listAdapter = new ArrayAdapter<String>(getActivity(), R.layout.support_simple_spinner_dropdown_item, names);

            // set the adapter
            list.setAdapter(listAdapter);

            return view;
        }
    }
    */
}
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabGravity="fill"
            app:tabMode="fixed" />
    </android.support.design.widget.AppBarLayout>


    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    </android.support.design.widget.AppBarLayout>

   <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="?attr/actionBarSize"
        android:orientation="vertical">

        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="350dp"
            android:layout_margin="5dp" />

        <Button
            android:id="@+id/btnIconTextTabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/btn_icon_text_tabs"
            android:textSize="15dp" />

    </LinearLayout>


</android.support.design.widget.CoordinatorLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="350dp"
        android:layout_margin="5dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="clip_vertical"
        android:onClick="onGeoLocationButtonClick"
        android:text="Your Location" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="clip_vertical"
        android:onClick="onSubmitPriceClick"
        android:text="Submit a price" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="clip_vertical"
        android:onClick="onScrollViewButtonClick"
        android:text="Scrollview" />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="clip_vertical"
        android:onClick="onWebViewButtonClick"
        android:text="Webview" />

    <WebView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="350dp"
        android:layout_margin="5dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="clip_vertical"
        android:onClick="onGeoLocationButtonClick"
        android:text="Your Location" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="clip_vertical"
        android:onClick="onSubmitPriceClick"
        android:text="Submit a price" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="clip_vertical"
        android:onClick="onScrollViewButtonClick"
        android:text="Scrollview" />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="clip_vertical"
        android:onClick="onWebViewButtonClick"
        android:text="Webview" />

    <WebView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>