小编Gia*_*uca的帖子

我在哪里可以找到一些Android UI的好例子?

我对Android世界很陌生,而且,由于工作需要,我正试图进入.虽然我并不特别害怕"思考"代码(即Java),但我有点困惑开发用户界面.

因为我发现,最简单最有效的方式来学习的东西是从那些谁是最好的拷贝,我不知道是否有一些资源类的东西,在那里,做.

我的意思是:你知道一些开源应用程序,我可以从中建立自己的Android布局知识吗?虽然我想了很多,但我自己无法做到这一点!

android open-source sample android-layout

45
推荐指数
1
解决办法
8万
查看次数

为什么ViewHolder上的OnClickListener不起作用?

我正在尝试实现一种处理项目选择的方法RecyclerView.我个人不喜欢在通过手势的一些答案中建议的方式,我认为实施一个OnClickListener,如这里这里所建议的那样,更清洁.

事实是......这种模式实际上并不起作用!我真的无法理解,为什么我OnClickListener.onClick永远不会被调用.它有点像另一种方法拦截点击之前onClick可以处理它.

这是我的代码:

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        TextView tvName;
        ImageView star;

        public ViewHolder(View itemView) {
            super(itemView);

            tvName = (TextView) itemView.findViewById(R.id.CHAT_ITEM_name);
            star = (ImageView) itemView.findViewById(R.id.CHAT_ITEM_star);

            Fonts.setTypeface(tvName, regular);
        }

        @Override
        public void onClick(View view) {
            int position = getLayoutPosition();
            select(position);
        }
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,能够访问整个数据集中被点击项目的位置非常重要,以便将其删除,所以做一些类似的事情indexOfChild也是不可接受的:我试过了,但是这个方法可以为你提供项目的位置在列表的可见部分中,因此变得list.remove(position)不可能.

android onclick onclicklistener android-recyclerview

21
推荐指数
1
解决办法
2万
查看次数

如何在Java项目中使用*.jar文件?

我是Java的新手,我一直试图在我正在研究的Java项目中使用外部jar库.

该库是Twitter4J(http://twitter4j.org/),这是一组复杂的文件,我无法理解如何包含.我在Windows上使用Eclipse.我理解CLASSPATH环境变量的含义(或者,我认为我做过),但我无法理解如何将它链接到Eclipse环境.

这篇博文似乎是我一直在寻找的:http://jasperpeilee.wordpress.com/2012/01/25/how-to-set-up-twitter4j-quickly-in-your-java-project/

但:

Add twitter4j-core-2.2.5.jar into project for general use.
Run Code Online (Sandbox Code Playgroud)

1)我应该在哪里复制core文件?在/bin/文件夹中?或者在一个完全不相关的/lib/文件夹中,如SO中的这个问题所述?

Copy Twitter API property file into your project/bin directory.
Run Code Online (Sandbox Code Playgroud)

2)什么是Twitter API属性文件?

3)如何包含JavaDoc jar文件?是否有可能让他们进入Elipse?

任何形式的帮助,即使只是一个链接,将非常感谢!

java jar

8
推荐指数
1
解决办法
7540
查看次数

从NavigationDrawer中选择时如何防止碎片重新创建?

我有一个简单的活动,它托管了一个导航抽屉.其中一个条目是WebView,它需要大量的加载(它显示Gmail,因此所有那些令人讨厌的重定向需要花费很多).

即使发生了不同的选择,我也想保留片段.我认为这些解决方案可能会奏效.他们没有.

1)未重新创建的片段:即使mWebmailFragment 实际上不为空,onCreateView()被调用在任何情况下.

 private Fragment mWebmailFragment /*, the others */;

 public void selectItem(int position) {
    Fragment fragment = null;
    switch (position) {
        case FRAGMENT_CODE_WEBMAIL:
            mWebmailFragment = mWebmailFragment!=null ? mWebmailFragment : new WebmailFragment();
            fragment = mWebmailFragment;
            break;
     // ...
 }
Run Code Online (Sandbox Code Playgroud)

2)如果调用onCreateView(),保留WebView对象状态可能有效.好吧,它没有:调试我发现savedInstanceState 始终为 null.我不知道为什么.

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)  {
    super.onCreateView(inflater, container, savedInstanceState);

    // Retain instance
    setRetainInstance(true);

    //....

    // SavedState
    if (savedInstanceState != null) {
            mWebView.restoreState(savedInstanceState);
    } else {
        // do stuff
    }
}
@Override …
Run Code Online (Sandbox Code Playgroud)

android android-webview android-fragments navigation-drawer

6
推荐指数
1
解决办法
2067
查看次数

Docker 内线程内的 tqdm 不显示进度条

从 Docker 容器内部来看,tqdm在其自己的线程上运行时似乎出现了一些问题。

我尝试了其他进度条(例如alive-progress),但它们都失败了。当在容器外部运行时,相同的代码可以完美地工作。这似乎是 Docker 特有的问题,很可能是一个docker-compose问题,但我无法发现问题。有什么建议吗?

编辑:docker run -it console_test 有效。肯定是配置有问题docker-compose.yml

重现步骤:

console_test/console.py

import threading
import time
import tqdm
import sys

print("Starting the test")


def job():
    for i in tqdm.tqdm(range(50)):
        time.sleep(0.1)
        sys.stdout.flush()  # this has no effect
        # print("Hi")  # this is printed though!
    print("Finished.")


job_thread = threading.Thread(target=job)
job_thread.start()

while 1:
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

console_test/Dockerfile

# Using official python runtime base image
FROM python:3.8.9

RUN pip install tqdm …
Run Code Online (Sandbox Code Playgroud)

python progress-bar docker docker-compose tqdm

6
推荐指数
0
解决办法
2720
查看次数

基于两个标准对列表进行排序的最佳算法是什么?

我有一个列表,我需要根据两个标准进行排序.第一个标准是a Boolean,比方说isBig.第二个是a Long,表示时间戳.

我需要以这种方式排序列表的元素:之前isBig = true,然后是isBig = false.在这些组中,单个元素应根据其时间戳降序排序.

基本上,我希望结果是这样的:

isBig - 2015/10/29
isBig - 2015/10/28
isBig - 2015/10/27
!isBig - 2015/10/30
!isBig - 2015/10/27
!isBig - 2015/10/26
Run Code Online (Sandbox Code Playgroud)

让我们说对象是这样的:

public class Item {
    Boolean isBig;
    Long timestamp;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

而这份清单就是List<Item> list.

我发现一种方法是制作三个for-cycles:第一个组成两个组:isBig!isBig.第二个和第三个用于对其中的元素进行排序.最后我合并了两个列表.

是否有更有效的算法根据两个标准对列表进行排序?

java sorting algorithm list

3
推荐指数
1
解决办法
866
查看次数

如何开始为亚马逊Fire TV开发?

我被要求开发一个亚马逊Fire TV应用程序,但我发现很难理解走上正轨所需的步骤.

根据亚马逊文档的规定,以前可用的Fire TV SDK插件现已弃用,他们建议只使用Android v17 Leanback Library.

到目前为止,我还没有(还)一台消防电视,官方文件非常差,而且相当困惑; 我无法 - 然后 - 了解"纯"Android TV应用程序是否与Fire OS 5完全兼容,因此Fire TV的开发实际上与开发通用亚马逊电视相同(从SDK到虚拟测试过程).如果不是这样,我必须考虑哪些不同的步骤?

android amazon android-tv amazon-fire-tv

3
推荐指数
1
解决办法
1643
查看次数

旋转后片段的id 0x没有找到视图?

我正在一个容器中加载一些片段,它也容纳了一个导航抽屉.当旋转屏幕,然后将其旋转回来时,应用程序崩溃:

java.lang.RuntimeException:无法启动活动ComponentInfo {lu.gian.uniwhere.alfa/com.example.alfa.ActivityHome}:java.lang.IllegalArgumentException:找不到id 0x7f0b004e的视图(com.example.alfa:id/taxes_pager)片段FragmentTaxToBePaid {b5969898#2 id = 0x7f0b004e}

在转向风景后旋转回纵向模式时出现此错误.有趣的是我没有加载FragmentTaxes(即NB.,a ViewPager),但完全是另一个片段(FragmentOverwiew - 没什么特别需要注意的)!

从FragmentSession旋转回来时它会抛出完全相同的错误,FragmentSession也是一个ViewPager持有者:

java.lang.RuntimeException:无法启动活动ComponentInfo {lu.gian.uniwhere.alfa/com.example.alfa.ActivityHome}:java.lang.IllegalArgumentException:找不到id 0x7f0b000f的视图(com.example.alfa:id/session_pager)片段FragmentSessionApplied {b5afa300#1 id = 0x7f0b000f}

我已经尝试了所有的东西(没有保留片段的实例,将它们放在后面的堆栈中,替换Framexml标签FrameLayout,为景观模式创建特定的布局等等),但几乎没有任何排序效果.我认为这是由于片段生命周期,因为崩溃是不稳定的,难以调试,但很难理解如何解决这类问题.

ActivityHome

public void selectItem(int position) {
        // ...
    FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
                    .addToBackStack(null)
                    .replace(R.id.content_frame, fragment)
                    .commit();
    mDrawerList.setItemChecked(position, true);
    setTitle(mDrawerTitles[position]);
    mDrawerLayout.closeDrawer(mDrawerList);
}
Run Code Online (Sandbox Code Playgroud)

activity_home

<android.support.v4.widget.DrawerLayout
    ... >

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


    <!-- The navigation drawer  .... -->

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

FragmentTaxes

    View rootView = inflater.inflate(R.layout.fragment_taxes, …
Run Code Online (Sandbox Code Playgroud)

android rotation fragment android-layout android-support-library

2
推荐指数
1
解决办法
2471
查看次数

是否有可能超级列出一个列表?

这可能听起来有点微不足道,但我真的无法找到问题的症结所在.

List<Dog> dogs = getListOfDogs();
List<Cat> cats = getListOfCats();

feed(dogs);
feed(cats);

public void feed(List<Animal> animals) {
    // feed the animal:
    // depending on the type of animal, I might want to give it
    // different kind of food.
}

class Dog implements Animal { /**/ }
class Cat implements Animal { /**/ }
interface Animal { /**/ }
Run Code Online (Sandbox Code Playgroud)

我的上下文非常类似于上面描述的上下文.我们也假设getListOfDogs并且getListOfCats是固定的,并且没有办法在那一方采取行动.

当然,就像这样,这是一个非法的代码:feed只接受List<Animal>类型,而我只能List<Cat>List<Dog>.

因为feed这两种动物几乎完全相同,除了食物的种类(我可以通过它来管理它instanceof),我想避免复制它,只是改变签名.

有没有办法超级投射两个名单?像这样的东西(这显然不正确):feed((List<Animal>) getListOfDogs());

java casting list

2
推荐指数
1
解决办法
142
查看次数

如何比较两个对象列表之间的字段?

假设我有一个看起来像这样的对象:

public class Supermarket {

    public String supermarketId;
    public String lastItemBoughtId;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

我有两个超市列表,一个是“旧”,另一个是“新”(即一个是本地的,另一个是从云中检索的)。

List<Supermarket> local = getFromLocal();
List<Supermarket> cloud = getFromCloud();
Run Code Online (Sandbox Code Playgroud)

我想找到所有彼此不同的Supermarket对象(给定的supermarketIdlastItemBoughtId

我想到的第一个解决方案是迭代第一个List,然后在第一次迭代内迭代第二个,每次每次local.get(i).supermarketId.equals(cloud.get(j).supermarketId),检查元素的是否lastItemBoughtIdi元素的id不同j。如果不同,则将整个Supermarket对象添加到新列表中。

更清楚地说,是这样的:

List<Supermarket> difference = new ArrayList<>();
for (Supermarket localSupermarket : local) {
    for (Supermarket cloudSupermarket : cloud) {
        if (localSupermarket.supermarketId.equals(cloudSupermarket.supermarketId) &&
        !localSupermarket.lastItemBoughtId.equals(cloudSupermarket.lastItemBoughtId))
            difference.add(cloudSupermarket);
    }
}
Run Code Online (Sandbox Code Playgroud)

显然,这看起来大大低效。有没有更好的方法来处理这种情况?

java collections list

1
推荐指数
1
解决办法
2100
查看次数