如果我们必须使用自定义适配器创建第二个活动,如何更改启动器活动?

时间:2017-07-26 15:26:14

标签: android custom-adapter android-launcher

我想更改我的启动器活动。我首先创建的活动有可选择的listview。当用户第一次打开应用程序时;他将选择人员然后我的第二个创建的活动,这些选定的人来到我的自定义列表视图。我问题是;如何更改启动器活动,因为在我的第二个活动有自定义列表视图,如果用户不点击任何人我的第二个活动将是空的,以便我收到错误消息。如何解决这个问题?

我的第一项活动:

select sum(count), status from (select ceil(char_length(message)/70) as count, status from table) as data group by status

我的第二个活动:

public class MainActivity extends AppCompatActivity {

ArrayList<String> selectedlistisim = new ArrayList<>();

    int girisyazısıcount = 2 ;
    ArrayList<String> listte = new ArrayList<String>();
    String phonenumber;
ArrayList<String> selectedlist = new ArrayList<>();
    ListView chosinglist;
Button kaydet ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      kaydet = (Button) findViewById(R.id.kaydet);
   chosinglist = (ListView) findViewById(R.id.chosing);
        chosinglist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

        getNumber(this.getContentResolver());


 }

    private void getNumber(ContentResolver contentResolver) {
        Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
        while (phones.moveToNext())
        {

            String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            phonenumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            System.out.println(".................."+phonenumber);



            listte.add(phonenumber);
        }
        phones.close();// close cursor
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.checkrow,
                R.id.checkedTextView2,listte);


kaydet.setEnabled(false);
        chosinglist.setAdapter(adapter);
        chosinglist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String selecteditem = ((TextView)view).getText().toString();


                if (selectedlist.contains(selecteditem)){
                    selectedlist.remove(selecteditem);

                }else selectedlist.add(selecteditem);




                if (selectedlist.size() >= 5 && selectedlist.size() < 16 ) {


                    kaydet.setEnabled(true);
                }
                 if (selectedlist.size() == 16){
                     kaydet.setEnabled(false);

                 }
if (selectedlist.size() == 4){
    kaydet.setEnabled(false);
}


kaydet.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
Intent i = new Intent(MainActivity.this, AnaMenu.class);
i.putStringArrayListExtra("listem",selectedlist);
        startActivity(i);

        Toast.makeText(MainActivity.this, "abc.", Toast.LENGTH_LONG).show();

        MainActivity.this.finish();
    }
});
            }
        });
    }


}

2 个答案:

答案 0 :(得分:0)

所以要解决空列表错误,请尝试执行以下操作:

    kaydet.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             if(selectedlist.size()>0){
                   Intent i = new Intent(MainActivity.this, AnaMenu.class);
                   i.putStringArrayListExtra("listem",selectedlist);
                   startActivity(i);

                   Toast.makeText(MainActivity.this, "abc.", Toast.LENGTH_LONG).show();

               MainActivity.this.finish();
             }else{
               Toast.makeText(MainActivity.this, "No itens added", Toast.LENGTH_LONG).show();

              }
  }
    });

检查如果列表没有 itens ,如果没有显示文字,如果是,请转到下一个活动

打开 第二个活动而不是第一个,如果用户第二次启动活动,请执行此逻辑,在中活动在super.oncreate()之前检查数据库是否有数据如果是,则启动第二个活动,如果数据库为空则不执行任何操作。

我的逻辑示例

@Override
    protected void onCreate(Bundle savedInstanceState) {
        //here you check if database has data

        if(hasdata){
           //start second activity
        }

        super.onCreate(savedInstanceState);

       //Or if you want you can put logic here is the same

        setContentView(R.layout.activity_loginactivity);

        //Not put here below setcontentview!!!!
    }

之前创建活动检查数据库是否有数据,如果是,请转到其他活动,因为活动未创建且布局尚未添加,因为用户与点击启动器图标时打开第二个活动相同。

答案 1 :(得分:0)

公共类LoginActivity扩展了Activity {

最能帮助你的是尝试在Oncreate中添加以下相同的行。
这将检查列表是否为空,如果是,则重定向到列表活动,否则继续。

 @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       //add some code to detect if parent is selected
       if (parent == null){
           Intent in = new Intent(SecondActivity.this, PersonAcrivity.class);
           startActivity(in);
       }